javascript - 我不知何故无法停止我的 setTimeout() 循环

标签 javascript function settimeout cleartimeout

所以我有一个主要的函数,它每2-17秒触发另一个函数,但是当我尝试使用clearTimeout()来阻止它时它只是继续并完全忽略 clearTimeout()

所以这是我的主要职能:

var itemTimer;
var stopTimeout;

function major (){
    var itemTime = Math.floor(Math.random() * 15000) + 2000;
    itemTimer = setTimeout('items()', itemTime);    
    stopTimeout = setTimeout('major()',itemTime);
}

这是我的停止超时函数:

function stopTimer() {
    clearTimeout(itemTimer);
    clearTimeout(stopTimeout);
}

感谢您的帮助

最佳答案

您的setTimeout()被错误地调用;您正在调用 items()major()。相反,您需要将它们作为要调用的函数传递。

不要将括号传递给参数,也不要将参数用引号引起来。

而不是:

itemTimer = setTimeout('items()', itemTime);    
stopTimeout = setTimeout('major()',itemTime);

您正在寻找:

itemTimer = setTimeout(items, itemTime);
stopTimeout = setTimeout(major, itemTime);

希望这有帮助! :)

关于javascript - 我不知何故无法停止我的 setTimeout() 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517965/

相关文章:

javascript - 如何选择 CSS Puppeteer/Node.js 中定义的图像名称?

c# - 我可以使用此代码通过对话框登录吗?

php - 如何确定函数是否不返回任何内容?

javascript - 在其他端之后调用带有变量的函数(javascript/jquery)

javascript - 当所有引用都丢失时,停止从对象实例开始的超时

javascript - 浏览器在 Google Apps 脚本中弹出

javascript - 闭包问题。有小费吗?

Python:如何正确使用外部函数

javascript - 如何在 javascript 中使用 setTimeout 考虑延迟

javascript - 将 setTimeout 与 window.open() 一起使用后,将 setTimeout 与 window.close() 一起使用不起作用