0

我试图在最简单的情况下使用 setInterval 和 clearInterval :

var passiveInterval = "";
var activeInterval = "";

function myStartFunction()
{
    ...
    passiveInterval = window.setInterval(passiveCheck, pIntAmt);
    activeInterval = window.setInterval(activeCheck, aIntAmt);
    ...
}

function myEndFunction()
{
    ...
    if (passiveInterval != "")
    {
        alert("passiveInterval: " + passiveInterval);
        window.clearInterval(passiveItnerval);
        passiveInterval = "";
    }
    if (activeInterval != "")
    {
        window.clearInterval(activeInterval);
        activeInterval = "";
    }
    ...
}

令人难以置信的是警报触发,并给了我正确的间隔值(整数),但随后 clearInterval 语句触发:

ReferenceError:找不到变量:passiveItnerval

我已经对窗口的每一个排列都进行了尝试,这拍打在所有东西的前面,但没有任何效果......

4

3 回答 3

2

错字。crtl+f for "passiveItnerval"... "t" 和 "n" 颠倒了。

另外,如果可能,请考虑使用setTimeout而不是。会长毛。setIntervalsetInterval

于 2012-02-21T02:17:55.090 回答
0

你有一个错字

被动迭代!=被动间隔

于 2012-02-21T02:18:36.140 回答
0

我有一个简单的功能,你可以一遍又一遍地使用它:

var timer = function(t,i,d,f,fend,b) 
{
  if( !f )
   { return; }
  if( t == -1 || t > 0 )
   { setTimeout( function() { b=(f())?1:0; timer( (b)?0:(t>0)?--t:t, i+((d)?d:0), d, f, fend,b ); }, (b||i<0)?0.1:i ); }
  else if( typeof fend == 'function' )
        { setTimeout( fend, 1 ); }
};

parameters:
t = times/repeat count (-1 is endless)
i = interval wait period in milliseconds
d = Interval increase or decrease after each interval 
f = function to call after interval
fend = function to call when t ended

注意:当函数 f() 返回 true 时,即使是无限循环也可以停止

使用非常简单:

timer(4,1000,0,function(){alert('called');},function(){alert('Thank you - finished');});

想象一下你可以用它做什么,它是无穷无尽的;-)

问候和欢呼,Erwin Haantjes

于 2012-02-21T02:38:26.587 回答