1. ホーム
  2. javascript

[解決済み] setTimeout / clearTimeoutの問題点

2022-08-13 10:16:37

質問

私は、例えば10秒間の非アクティブ(ユーザーがどこにもクリックしない)の後、スタートページに移動するページを作ろうとします。私は残りのためにjQueryを使用しますが、私のテスト関数のセット/クリアは純粋なjavascriptです。

私の不満の中で、私はページ上の任意のクリックで呼び出すことができると期待した、この関数のようなものに行き着きました。タイマーは正常に開始されますが、クリックでリセットされません。関数が最初の10秒以内に5回呼び出された場合、5つの警告が表示されます...clearTimeoutはありません...

function endAndStartTimer() {
    window.clearTimeout(timer);
    var timer;
    //var millisecBeforeRedirect = 10000; 
    timer = window.setTimeout(function(){alert('Hello!');},10000); 
}

誰かトリックを行うコードのいくつかの行を持っていますか? - 任意のクリックでタイマーを停止、リセット、開始します。 - タイマーが例えば10秒になったら、何かをする。

どのように解決するには?

まず timer 外側 の外側で定義します。そうでなければ、関数を呼び出すたびに新しい変数が作成されます。

var timer;
function endAndStartTimer() {
  window.clearTimeout(timer);
  //var millisecBeforeRedirect = 10000; 
  timer = window.setTimeout(function(){alert('Hello!');},10000); 
}