javascript - 我希望页面在用户单击所有链接后重定向

标签 javascript jquery

我有这段代码是从旧帖子中获得的,但它似乎不再起作用了,请帮忙。我什至无法再点击链接,但我的主要目标是让用户点击所有链接,然后将页面重定向到我网站上的另一个页面。

<script>
window.onload = function () {
    var anchors, clicked_count, clicked, i, cur_anchor, my_anchor_id;

    anchors = document.getElementsByTagName("a");
    clicked_count = 0;
    clicked = {};

    for (i = 0; i < anchors.length; i++) {
        cur_anchor = anchors[i];
        cur_anchor.setAttribute("link", i);
        cur_anchor.onclick = function (e) {
            e = e || window.event;
            e.preventDefault();

            my_anchor_id = this.getAttribute("link");
            if (!(my_anchor_id in clicked)) {
                clicked[my_anchor_id] = null;
                if (++clicked_count === anchors.length) {
                    console.log("WOULD BE REDIRECTING");
                    //window.location.href = "facebook.com";
                }
            }
        };
    }
};
</script>
<a href="#Link1" id="link">Some Text 1</a>
<a href="#Link2" id="link">Some Text 2</a>
<a href="#Link3" id="link">Some Text 3</a>

最佳答案

首先,修复您的 HTML 您不能拥有多个相同的 id 属性,因为您获得了三次 id="link"。请将其更改为 class="link" 以避免出现问题。

像这样:

<a href="#Link1" class="link">Some Text 1</a>
<a href="#Link2" class="link">Some Text 2</a>
<a href="#Link3" class="link">Some Text 3</a>

如果您使用的是 jQuery,则可以使用更简单的代码实现您所描述的(即单击三个不同链接后重定向)。

下面是一个带注释的示例解决方案,它将检查哪些链接已被点击,并且仅当用户点击所有三个链接时才重定向,无论他以什么顺序点击它们:

    $(document).ready(function() {

    // Create an array for clicked elements
    var clicked = [];
      
    // Create a click event for every link with class "link"
    $('.link').click(function() {

      // Check if we didn't clicked that link yet
      if (clicked.indexOf($(this).attr('href')) === -1) {

        // If we didn't add it's href attribute to "clicked" array"
        clicked.push($(this).attr('href'));
      }
        
      // If number of clicked links is 3, redirect
      if (clicked.length === 3) {
        console.log('REDIRECT');
        // location.href = 'http://put-your-url-here.com'
      }
   });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#Link1" class="link">Some Text 1</a>
<a href="#Link2" class="link">Some Text 2</a>
<a href="#Link3" class="link">Some Text 3</a>

关于javascript - 我希望页面在用户单击所有链接后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43407576/

相关文章:

javascript - 如何查找属性的 set/get 函数 (Object.defineProperty)

c# - SignalR - 使用 UserID Provider 向用户发送消息

javascript - jQuery addClass() 到 ul :nth-child?

javascript - 有没有一种方法可以在不使用SQL的情况下用PHP在页面之间交换数据?

javascript - ajax发送和接收之间的时间返回负值

JQuery UI 显示 ('slide' ,{direction : right}, 500) 不滑动,仅显示

javascript - 从 Parse.Object.save() 返回完整的解析对象

jquery - Twitter Bootstrap 轮播 : Change background outside carousel-element

javascript - 在下拉菜单中响应地隐藏和显示子元素

javascript - 还记得刷新时 div 的位置吗?