所以我有一个主要的函数
,它每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/