这个javascript函数中的setInterval()和clearInterval()有什么问题? clearInterval返回undefined

时间:2011-10-13 15:19:34

标签: javascript timer

我有以下代码:

var focusIntervalObj = setInterval(function(){
            focusDelayCaused++;
            console.log(focusDelayCaused);
        }, 100);

clearInterval(focusIntervalObj);

我安装了一个firebug。

我希望此代码记录focusDelayCaused

的值

但是当我执行时,它没有这样做,而且clearInterval()只返回undefined。

请指导。

3 个答案:

答案 0 :(得分:3)

您正在设置间隔并在其触发前将其清除。

var focusIntervalObj = setInterval(function(){
        focusDelayCaused++;
        console.log(focusDelayCaused);
        clearInterval(focusIntervalObj);
    }, 100);

这可能就是你在想什么。哪个更简单:

var focusIntervalObj = setTimeout(function(){
        focusDelayCaused++;
        console.log(focusDelayCaused);
    }, 100);

答案 1 :(得分:1)

根据上面的代码,您可以在设置之后立即清除间隔。所以它永远不会有机会跑。

在满足某种条件之后清除间隔而不是在设置之后立即清除间隔会有所帮助。

if (focusDelayCaused>50) {
  clearInterval(focusIntervalObj);
}

答案 2 :(得分:0)

如果你想要一些函数执行一次而不再执行,请使用setTimeout,在你的情况下:

var focusIntervalObj = setTimeout(function(){
            focusDelayCaused++;
            console.log(focusDelayCaused);
        }, 100);