问题
声明一个setInterval()而不保留对其的引用(这是从函数调用setInterval()返回的,它返回已注册事件的ID号)。
像这样:
var interval = setInterval(function() {
console.log('i');
}, 1000);
console.log(interval);
您可以看到它分配了一个随机数字作为事件的ID。 然后,当我们清除间隔时,它将使用该ID。
只需调用:
clearInterval(interval);
肮脏的解决方案
现在这不是一个好的编码实践(出于多种原因),但是如果您确实需要清除该间隔,我们可以简单地执行循环以查找事件的ID,以停止所有正在运行的setInterval()事件。 我已经做了一个快速的jsfiddle给你看。 https://jsfiddle.net/WqCws/ 。
for(i=0; i<100; i++)
{
window.clearInterval(i);
}
我很确定这对于setTimeout()和clearTimeout()也同样适用;
From: https://www.sitepoint.com/clear-setinterval-knowing-id/