43

jQueryプラグインでsetInterval()が呼び出されましたが、setIntervalが格納されている変数にアクセスできないメインページからそれをクリアしたいと思います。

ページに存在するすべてのタイマーをクリアする方法はありますか?

4

8 に答える 8

61

これは、すべての間隔をクリアするロジックの 1 つになる可能性があります...

for (var i = 1; i < 99999; i++)
        window.clearInterval(i);
于 2011-08-21T03:00:46.500 に答える
25

setInterval をオーバーライドできます。

window.oldSetInterval = window.setInterval;
window.setInterval = function(func, interval) {
    var interval = oldSetInterval(func, interval);
    // store it in a array for stopping? stop it now? the power is yours.
}
于 2009-06-05T22:57:37.197 に答える
10

いいえ、できません。元の変数がないわけではありません。

于 2009-06-05T22:27:01.970 に答える
6

答え

for (var i = 1; i < 99999; i++)
     window.clearInterval(i);

私が探していたものでした。この非常に単純なロジックを少し改善することで、このようなことができました。

var i = 0;
var rotatorId;
var rotator;

rotator =  setInterval(function() {myfunction(), 3000});
rotatorId[i] = rotator;
i++;

if (rotator > 1) {
   for(i = 1; i < rotatorId.length; i++){
      clearInterval(rotatorId[i]);                      
    }                       
}
于 2013-11-09T12:52:58.117 に答える
2

私が見つけた最良の方法...

var clearAllIntervals = function ( ) {

    var intervals = [];

    $(".elements").each(function() {
        intervals.push( setInterval(function() {

        }, 1000) );
    });

    return function clearAll ( ) {
        intervals.forEach( clearInterval );
    }

}( );

// When you want to clear them:
clearAllIntervals( );
于 2017-05-18T10:38:18.250 に答える