当前元素的clearInterval

时间:2014-01-04 04:57:34

标签: javascript

我正在开发一个动态生成许多setInterval的项目,因此无法将其引用存储在变量中,以便可以用于clearInterval。     只是想问你们,如果有人知道如何clearInterval在具有Id的特定div上。

在我的项目中,当setInterval应该被清除时,我也从文档正文中删除元素。因此,当再次调用setInterval时,我可以设置条件来检查具有该特定id的元素是否存在,然后我才能执行setInterval代码。

像这样,

if(document.getElementById("char0") != null)
{
   // execute the setInterval code. 
}

但这种方法仍需要CPU时间。我动态生成大约150个setIntervals,不能为它们创建变量引用。如果你有任何关于如何实现这一点的线索,请提供帮助。

3 个答案:

答案 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时,请按此约定创建变量名称并清除它。