这段代码从一个页面中获取一些值,比较它们,如果为true,就按下一个按钮,这是在一个循环中完成的
在chrome控制台中运行这段JavaScript可以正常运行一段时间,然后运行两次。脚本在编译器上运行良好,那么为什么它有时会在Chrome控制台上运行呢?有没有一种方法可以一直只执行一次代码,而不需要取出setInterval
或setTimeout
或if,因为我绝对需要它们!
setInterval(function() {
var time = document.getElementById("timer").innerHTML;;
if(time>0){
setTimeout(function() {
var x2b = document.getElementById("2x").innerHTML;
var x3b = document.getElementById("3x").innerHTML;
var evt = document.createEvent("MouseEvents");
if (x3b< x2b) {
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var run = document.getElementById("3x");
run.dispatchEvent(evt);}
}, time);}
}, 2000);
字符串
1条答案
按热度按时间8hhllhi21#
可能是你的代码有问题,而不是Chrome。
#timer
如何更新?如果它的值恰好是类似2500
的值,那么setTimeout
将被放置在调用堆栈中。然后2000ms之后,下一个间隔将发生。如果#timer
恰好是类似于500
的东西,那么另一个setTimeout
将被放置在调用堆栈上。再过500ms后,两个超时将相继触发。这可能会使超时出现两次。记录当前时间(
Date.now()
)和#timer
的值,并在超时发生时记录该信息将很有帮助。