clearIntervalが呼び出された後も、setIntervalは実行を継続します

ジョン・ディーバーズ

ブートキャンプ中に宿題として作成しているクイズアプリのカウントダウンタイマーに取り組んでいます。現在、startQuiz()内のsetInterval関数が0に達すると、間隔をクリアすることになっていることを除いて、レンダリング時にすべてが正しく機能しています。ただし、ドキュメントに書き込まれたinnerHTMLは、カウントダウンがまだ実行されているかのように瞬間的に点滅し続けます。おそらく間違った場所でのリターンだと思いますが、スクリプト全体でリターンを加算、減算、移動しようとしましたが、解決策がどこにあるのかわかりません。

var startButton = document.querySelector("#startButton"); 
var time = document.querySelector("#time");
var countdown = document.querySelector("#countdown");
var timeLeft;
var userScore;

startButton.addEventListener("click", startTimer);

function startTimer() {
    var startCount = 5;
    setInterval(function(){
        if(startCount <= 0) {
            clearInterval(startCount=0);
            startQuiz();
        }
        countdown.innerHTML = startCount;
        startCount -=1;
    }, 1000);
    return;
}
    
function startQuiz() {
    timeLeft = 10;
    quizQuestions();

    setInterval(function(){
        if(timeLeft <= 0) {
            clearInterval(timeLeft=0);
            gameOver();
        }
        time.innerHTML = timeLeft;
        timeLeft -=1;
    }, 1000)
    return;
}

function gameOver() {
    document.getElementById("quizQuestion").innerHTML = "GAME OVER";
    return;
}

function quizQuestions() {
    document.getElementById("quizQuestion").innerHTML = questionA.question;
    return;
}

これがこれまでのスクリプト全体です。questionAは複数のキーと値のペアを持つオブジェクトであり、問​​題とは関係がないため、questionAのva​​r定義のみを省略したため、スペースを節約するために省略しました。startTimer()関数は、ゲームを開始するための個別のカウントダウンタイマーとして適切に機能しますが、何らかの方法でstartQuiz()関数に干渉する場合に備えて、コードに含めました。

ムスタファアルスラン

setInterval間隔識別のためにintergerを返します。間隔をクリアするには、この整数を使用する必要があります。

var intervalId = setInterval(function(){
   if(timeLeft <= 0) {
      clearInterval(intervalId);
      gameOver();
   }
   time.innerHTML = timeLeft;
   timeLeft -=1;
}, 1000);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

clearTimeoutが呼び出された後も、setTimeoutは実行を継続します

分類Dev

jQuery/JS setTimeout() は、clearTimeout() が呼び出された後も実行されます。

分類Dev

「zsh」を呼び出した後、スクリプトの実行を継続する方法はありますか?

分類Dev

google-colaboratoryで接続が失われた後も、プログラムは実行を継続しますか?

分類Dev

phpはページを離れた後も実行を継続します

分類Dev

jQueryは、3つのAJAX呼び出しとループが実行された後に実行されます

分類Dev

関数は戻った後も実行を継続します

分類Dev

setIntervalから呼び出されたメソッドは、途中で実行を停止します

分類Dev

すべてのlatch.countdown()が呼び出されても、プログラムは実行を続けます

分類Dev

Selectorクラスが削除されてもajaxは実行を継続します

分類Dev

ScanJobは、15分が経過した後も呼び出しを継続し、リージョンが一致すると停止します。

分類Dev

キャンセルが呼び出された後もスレッドが実行され続けるのはなぜですか?

分類Dev

プロセスがSIGSTOPで停止された後も、選択タイマーは実行を継続しますか?

分類Dev

TImage.Picture.LoadFromFileを呼び出した後、コードが続行されるのはなぜですか?

分類Dev

Javaで例外がスローされた後も実行を継続する

分類Dev

ajax呼び出しの実行後にデータが追加されたら、メソッドを呼び出す

分類Dev

printf()を呼び出すたびに新しい内部バッファーが作成されますか、それとも後続のすべての呼び出しで最初の呼び出しと同じバッファーが使用されますか?

分類Dev

条件が満たされた後にhttpget callを実行する方法。そうでない場合は、角度4で再試行して再度呼び出します。

分類Dev

クラスが呼び出された後、初期化でメソッドを実行します

分類Dev

Hystrix は、バックエンド API が実行されても、fallbackMethod を呼び出します

分類Dev

takeWhile演算子が「false」を返した後もRXJSタイマーは実行を継続します

分類Dev

.resumeは、他のデリゲートメソッドを呼び出した後に実行されます

分類Dev

呼び出されたプログラムが例外をスローした場合、Windowsタスクは実行を続けますか?

分類Dev

アプリを呼び出すターミナルを閉じた後もアプリを実行し続ける方法はありますか?

分類Dev

PHP PHPSESSIDは、session_name(***)を呼び出した後も存続します

分類Dev

捕捉されなかったSIGINT(ターミナルからCtrl-C)を受信した後も、プロセスは実行を継続します

分類Dev

LiveObserverは、RemoveObserverを呼び出した後も監視を続けます

分類Dev

removeFromSuperlayerを呼び出した後もCALayerが表示されたまま

分類Dev

clearIntervalを間隔に適用した後、呼び出されたときに間隔が再び機能しないのはなぜですか?

Related 関連記事

  1. 1

    clearTimeoutが呼び出された後も、setTimeoutは実行を継続します

  2. 2

    jQuery/JS setTimeout() は、clearTimeout() が呼び出された後も実行されます。

  3. 3

    「zsh」を呼び出した後、スクリプトの実行を継続する方法はありますか?

  4. 4

    google-colaboratoryで接続が失われた後も、プログラムは実行を継続しますか?

  5. 5

    phpはページを離れた後も実行を継続します

  6. 6

    jQueryは、3つのAJAX呼び出しとループが実行された後に実行されます

  7. 7

    関数は戻った後も実行を継続します

  8. 8

    setIntervalから呼び出されたメソッドは、途中で実行を停止します

  9. 9

    すべてのlatch.countdown()が呼び出されても、プログラムは実行を続けます

  10. 10

    Selectorクラスが削除されてもajaxは実行を継続します

  11. 11

    ScanJobは、15分が経過した後も呼び出しを継続し、リージョンが一致すると停止します。

  12. 12

    キャンセルが呼び出された後もスレッドが実行され続けるのはなぜですか?

  13. 13

    プロセスがSIGSTOPで停止された後も、選択タイマーは実行を継続しますか?

  14. 14

    TImage.Picture.LoadFromFileを呼び出した後、コードが続行されるのはなぜですか?

  15. 15

    Javaで例外がスローされた後も実行を継続する

  16. 16

    ajax呼び出しの実行後にデータが追加されたら、メソッドを呼び出す

  17. 17

    printf()を呼び出すたびに新しい内部バッファーが作成されますか、それとも後続のすべての呼び出しで最初の呼び出しと同じバッファーが使用されますか?

  18. 18

    条件が満たされた後にhttpget callを実行する方法。そうでない場合は、角度4で再試行して再度呼び出します。

  19. 19

    クラスが呼び出された後、初期化でメソッドを実行します

  20. 20

    Hystrix は、バックエンド API が実行されても、fallbackMethod を呼び出します

  21. 21

    takeWhile演算子が「false」を返した後もRXJSタイマーは実行を継続します

  22. 22

    .resumeは、他のデリゲートメソッドを呼び出した後に実行されます

  23. 23

    呼び出されたプログラムが例外をスローした場合、Windowsタスクは実行を続けますか?

  24. 24

    アプリを呼び出すターミナルを閉じた後もアプリを実行し続ける方法はありますか?

  25. 25

    PHP PHPSESSIDは、session_name(***)を呼び出した後も存続します

  26. 26

    捕捉されなかったSIGINT(ターミナルからCtrl-C)を受信した後も、プロセスは実行を継続します

  27. 27

    LiveObserverは、RemoveObserverを呼び出した後も監視を続けます

  28. 28

    removeFromSuperlayerを呼び出した後もCALayerが表示されたまま

  29. 29

    clearIntervalを間隔に適用した後、呼び出されたときに間隔が再び機能しないのはなぜですか?

ホットタグ

アーカイブ