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

打ち間違え。"passiveItnerval" の場合は crtl+f... "t" と "n" が逆になります。

また、可能であればsetTimeout代わりに使用することも検討してください。毛むくじゃらになることができます。setIntervalsetInterval

于 2012-02-21T02:17:55.090 に答える
0

タイプミスがあります

passiveItnerval != パッシブ間隔

于 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');});

あなたがそれで何ができるか想像してみてください、それは無限です;-)

あいさつと乾杯、アーウィン・ハーンチェス

于 2012-02-21T02:38:26.587 に答える