jQueryプラグインでsetInterval()が呼び出されましたが、setIntervalが格納されている変数にアクセスできないメインページからそれをクリアしたいと思います。
ページに存在するすべてのタイマーをクリアする方法はありますか?
jQueryプラグインでsetInterval()が呼び出されましたが、setIntervalが格納されている変数にアクセスできないメインページからそれをクリアしたいと思います。
ページに存在するすべてのタイマーをクリアする方法はありますか?
これは、すべての間隔をクリアするロジックの 1 つになる可能性があります...
for (var i = 1; i < 99999; i++)
window.clearInterval(i);
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.
}
いいえ、できません。元の変数がないわけではありません。
答え
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]);
}
}
私が見つけた最良の方法...
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( );