再次单击时javascript autoclick循环不会重置

标签 javascript jquery

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

$('.more_notes_link').click(function() {
    var LoopCount = 10;
    var i = 0;
    clearInterval(loadNotesInterval);
    var 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)
});

GM_addStyle ( ".notes .note.without_commentary{display:none} .notes .note.reply{display:inline}" );

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

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

编辑:我尝试在各处放置一些 console.logs,似乎脚本在第一次点击后根本没有检测到我的点击。所以出于某种原因,即使 .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)
    });    
}());

关于再次单击时javascript autoclick循环不会重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35050453/

相关文章:

jQuery通过data属性find()元素,其值为object

jQuery 无法在 iPhone 上加载

java - 使用 CORS 的跨域 ajax 请求

javascript - 如何在 angular.js 中使用 ng-model 获取按钮文本?

javascript - jQuery/javascript中的思维导图组件

javascript - 为什么网页中定义了这么多 JavaScript 变量却没有使用?

javascript - 如何使用 jQuery 将行号添加到代码块?

javascript - 未捕获的类型错误 : Cannot set property 'innerHTML' of null using a for loop

javascript - Highcharts 和 Json 数据

javascript - JQuery 使图像元素在可点击的 div 中不活动