我正在开发一个动态生成许多setInterval
的项目,因此无法将其引用存储在变量中,以便可以用于clearInterval
。
只是想问你们,如果有人知道如何clearInterval
在具有Id的特定div上。
在我的项目中,当setInterval
应该被清除时,我也从文档正文中删除元素。因此,当再次调用setInterval
时,我可以设置条件来检查具有该特定id的元素是否存在,然后我才能执行setInterval
代码。
像这样,
if(document.getElementById("char0") != null)
{
// execute the setInterval code.
}
但这种方法仍需要CPU时间。我动态生成大约150个setIntervals,不能为它们创建变量引用。如果你有任何关于如何实现这一点的线索,请提供帮助。
答案 0 :(得分:2)
尝试将interval变量存储在闭包中:
var createInterval = function(elementId){
var interval;
interval = setInterval(function(){
if(document.getElementById(elementId) == null){
clearInterval(interval);
}else{
//Your code
}
},1000);
};
因此,您可以创建任意数量的间隔,并在这些DOM元素消失后将其删除。
createInterval('element1');
createInterval('element2');
createInterval('element3');
但正如@ alexander-omara所说,只使用几个间隔来更新所有元素就CPU使用率而言是更好的解决方案。
答案 1 :(得分:1)
您可以轻松地在DOM元素上保留对区间ID的引用:
var element = document.getElementById("char0");
element._someInterval = setInterval(function(){
//Some code.
}, 1000);
然后使用:
清除它if(element._someInterval)
{
clearInterval(element._someInterval);
}
但是,创建数百个间隔并不是一种非常有效的方法。您想要创建1个间隔,并循环遍历元素数组。
答案 2 :(得分:0)
您需要使用interval变量来正确调用clearinterval()。
如果您动态创建变量,例如“interval + divid”,那么每次获得Id时,请按此约定创建变量名称并清除它。