再次单击时未重置javascript自动单击循环

再次单击时未重置javascript自动单击循环,javascript,jquery,Javascript,Jquery,我为Tampermonkey制作了一个小脚本,以帮助我浏览tumblr笔记,而不必进行任何不必要的点击或查看“用户喜欢此”垃圾邮件 但出于某种原因,它只在运行一次时工作得很好,记录从1到10的数字,然后停止。。。然后它就不工作了。没有控制台输出,没有循环,它只点击一次 我已经尝试并放弃了几次,所以我想我终于可以在这里问是否有人可以解决我的问题。我自己也弄不明白 编辑:我试着把一些console.log放得到处都是,在第一次点击之后,脚本似乎根本没有检测到我的点击。因此,出于某种原因,即使.mor

我为Tampermonkey制作了一个小脚本,以帮助我浏览tumblr笔记,而不必进行任何不必要的点击或查看“用户喜欢此”垃圾邮件

但出于某种原因,它只在运行一次时工作得很好,记录从1到10的数字,然后停止。。。然后它就不工作了。没有控制台输出,没有循环,它只点击一次

我已经尝试并放弃了几次,所以我想我终于可以在这里问是否有人可以解决我的问题。我自己也弄不明白


编辑:我试着把一些console.log放得到处都是,在第一次点击之后,脚本似乎根本没有检测到我的点击。因此,出于某种原因,即使.more_notes_link仍然存在,它根本没有注意到我单击它。

因为
loadNotesInterval
是一个局部变量,所以每次单击都会得到一个新的

因此,如果您在单击并删除var之外定义它,它将按照您想要的方式工作

(function () {
    var loadNotesInterval;
    $('.more_notes_link').click(function() {
        var LoopCount = 10;
        var i = 0;
        clearInterval(loadNotesInterval);
        loadNotesInterval = setInterval(function() {
            if ($('.more_notes_link').length ) {
                $('.more_notes_link').click();
                i++;
                console.log(i);
                if (i >= LoopCount) {
                    clearInterval(loadNotesInterval);
                }
            }
            else
            {
                clearInterval(loadNotesInterval);
            }
        }, 1000)
    });    
}());

我的猜测是链接本身正在被重新生成,这意味着当你检查它的长度时,它可能会丢失

也许可以尝试在上使用
,而不是单击
方法。这样,您可以指定整个文档,并使用选择器筛选子体

$('document').on('click', '.more_notes_link', function() {
  // your code
}

我终于解决了这个问题

$('body').on('click', '.more_notes_link',function() {
    if (i == 0) {
        clearInterval(loadNotesInterval);
        var loadNotesInterval = setInterval(function() {
            if ($('.more_notes_link').length) {
                i++;
                $('.more_notes_link').click();
                if (i >= LoopCount) {
                    i = 0;
                    clearInterval(loadNotesInterval);
                }
            }
            else
            {
                i = 0;
                clearInterval(loadNotesInterval);
            }
        }, 1000)
    }
});
首先,单击一次后,它丢失了具有正确类的项目,因此我必须作为身体的子项搜索它

然后问题是它自己点击,同时启动了数百个循环。我解决了这个问题,只允许它在循环尚未运行时单击循环

我希望这能帮助其他人解决同样的问题,因为这个问题很难解决


如果有人想使用它,它会发布在

中,但实际上它什么都没做。。。我不是每次都想要一个新变量,所以每次单击链接它都会循环10次吗?这完全破坏了代码,它完全停止了工作。看起来你最终还是使用了后代过滤器。。。也许我应该为此得到分数;)对不起,我刚刚意识到我在查询中引用了“document”。如果你做了
$(文档)
而不是
$('document')
投了赞成票,这就行了,谢谢你的帮助。它还有其他问题,所以我用完整的代码发布了我自己的答案。:)
$('body').on('click', '.more_notes_link',function() {
    if (i == 0) {
        clearInterval(loadNotesInterval);
        var loadNotesInterval = setInterval(function() {
            if ($('.more_notes_link').length) {
                i++;
                $('.more_notes_link').click();
                if (i >= LoopCount) {
                    i = 0;
                    clearInterval(loadNotesInterval);
                }
            }
            else
            {
                i = 0;
                clearInterval(loadNotesInterval);
            }
        }, 1000)
    }
});