JavaScriptですべてのタイマーをクリアする方法

青灯夜游
リリース: 2023-01-07 11:47:39
オリジナル
16668 人が閲覧しました

JS では、for ループと clearInterval() 関数を使用してすべてのタイマーをクリアできます。構文 "end=setInterval(function(){},10000);for(i=1;i

JavaScriptですべてのタイマーをクリアする方法

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

ページ内のすべてのタイマーをクリアする必要がある場合があります。
タイマー (setInterval) を作成するときに変数を使用して保存すると、タイマーをクリアします。これは非常に簡単です。 、クリアするだけです (clearInterval)
例:

let timer = setInterval(function () {
    console.log('timer');
}, 1000);

clearInterval(timer);
ログイン後にコピー

ただし、作成されたタイマーが変数とともに保存されていない場合があるため、直接クリアすることはできません
たとえば:

let timer = setInterval(function () {
    console.log('timer');
}, 1000);
setInterval(function () {
    console.log('timer');
}, 1000);
clearInterval(timer);
clearInterval(/* ??? */); // 操蛋
ログイン後にコピー

最初のタイマーを保存するための変数 timer があるため、timerclearInterval に直接与えることができます。これを渡すとクリアされます。
しかし、2 番目のタイマーを保存しませんでした。clearInterval のときに何を渡せばよいかわかりません。これは非常に混乱しています

それで、これをどうやって解決するのですか? 何が問題なのでしょうか?
まずルールを見てみましょう:

for (let i = 0; i < 10000; i++) {
    let t = setInterval(function () { }, 1000);
    console.log(t);
}
ログイン後にコピー

実行結果:

JavaScriptですべてのタイマーをクリアする方法

明らかに簡単に取得できます:
setInterval戻り値はタイマーを表す数値であり、この値はタイマーが作成された順序に従って 1 から増加します。
したがって、ページ内のすべてのタイマーをクリアするというニーズを達成することは難しくありません。 ## したがって、たとえば、現在非常に多くのタイマーがあります:

let t = setInterval(function () { }, 1000);
let r = Math.random() * 100;
for (let i = 0; i < r; i++) {
    setInterval(function () { }, 1000);
}
ログイン後にコピー

それらをすべてクリアしたい場合は、ループを使用して、

を使用して 1 から最後に作成されたタイマーに対応する数値をクリアする必要があります。 clearInterval 。しかし、現在は大量のタイマーが存在しており、現在いくつのタイマーがあるのか​​がわからないため、最後に作成されたタイマーに対応する番号もわかりません。したがって、最初はもっと暴力的になることができます

for (let i = 1; i < 100000; i++) {
    clearInterval(i);
}
ログイン後にコピー

私は、100000 などの大きな数値を探します。通常、ページ上には 100000 を超えるタイマーがあってはなりません。通常、タイマーの範囲は 1,100000 です。したがって、この方法は間違いなく私たちのニーズを達成できます。

でも、やはりダメですね、ちょっと乱暴すぎるんです。次に、最後に作成したタイマーに対応する数値 n を見つける必要があります。タイマーに対応する数値は 1 から順番に増加することがわかっているので、別のタイマーを作成して変数 end Up に格納するだけで済みます。この数値は endは n 1 なので、n を見つけることができ、1 から n までループできます。ああ、作成したばかりの n 1 番目のタイマーをクリアすることを忘れないでください。これにより、ループが 1 から開始して終了します。

コードは次のとおりです:

let end = setInterval(function () { }, 10000);
for (let i = 1; i <= end; i++) {
    clearInterval(i);
}
ログイン後にコピー
このようにして、ページ内のすべてのタイマーをクリアする必要性を完全に認識しました

次に、Tencent を使用して効果を試してみましょう。ビデオの例:

JavaScriptですべてのタイマーをクリアする方法

Tencent Video のホームページにカルーセル画像があります。カルーセル画像は通常、

setInterval タイマーを使用して実装されます。このカルーセルのタイマーを格納する変数が何であるかわかりません。このカルーセルを停止したい場合は、先ほどのコードを使用してすべてのタイマーを直接停止できます。

JavaScriptですべてのタイマーをクリアする方法

#コンソールでコードを実行したところ、カルーセル画像が実際に停止していることがわかりました。 ######素晴らしい!

[推奨学習:

JavaScript 上級チュートリアル

]

以上がJavaScriptですべてのタイマーをクリアする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート