无法找到适当的超时或间隔

时间:2018-02-15 19:19:08

标签: javascript timeout pause

我无法找到超时或暂停(尝试并计算到大数字)点击事件的方法。我使用 alert('x') $(arr [i-1])之前停止。点击(); 然后我有之后按下输入。但我想在点击事件后自动暂停约300毫秒。

javascript:
    var arr = $("a.farm_icon_b");
var x = document.getElementById("plunder_list").rows;
var images;

for (var i = 0; i < x.length; i++) {
    var z = x[i].id;
        if (!!z) {

        images = document.getElementById(String(z)).getElementsByTagName('img');

        for (var j = 0; j < images.length; j++) {  
                if (!!images) {

                if (images[j].src == "https://dspl.innogamescdn.com/8.116/36249/graphic/command/attack.png") {

                    if (images[j].tooltipText == "1 atak w drodze") {
                        alert('x');
                        $(arr[i - 1]).click(); 

                    } else if (images[j].tooltipText == "2 ataki w drodze") {
                        alert('y');
                        $(arr[i - 1]).click();
                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用javascript setTimeout函数来保存或停止脚本按照您的要求执行一段时间。查看此Link了解更多详情。一切顺利。

setTimeout(function(){ 
   $(arr[i - 1]).click(); 
}, 3000); // 3000 is stands for 3 second you can change it according to your requirementcode here

答案 1 :(得分:-1)

重要提示(感谢@Thomas突出显示此功能)此功能不会睡眠&#34; 300毫秒,它冻结了页面。浏览器只是停留在该循环中300毫秒,并且不能做任何事情,直到结束。

我认为这是您正在寻找的功能。它会帮助你在按钮点击之前延迟300ms。

function pausecomp(millis) 
{
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); } 
    while(curDate-date < millis);
} 

来源: http://userscripts-mirror.org/scripts/review/408779

用法:

pausecomp(300); // Sleep for 300ms
$(arr[i - 1]).click();

声明:

理想情况下,基于setTimeout()的解决方案是Javascript中此类问题的最佳方法(如Akansh所建议的)。但是,基于线性for循环的方法很可能不适用于此类解决方案,您需要设计一个基于回调函数的解决方案,该解决方案依赖于延迟执行。