これは私の最初のJSの質問です。私はこの関数をsetIntervalの中に持っています。だから、この機能は繰り返されます。JavaScript - innerHTMLはsetIntervalで独立して実行されません
function chooseAnswer() {
correct.onclick = function() {
if (range == 0) {
score++;
isGameOver = false;
}
else {
isGameOver = true;
}
}
incorrect.onclick = function() {
if (range != 0) {
score++;
isGameOver = false;
}
else {
isGameOver = true;
}
}
// Display score
displayScore.innerHTML = score;
}
onlickが実行された後すぐにスコア(innerHTML)が更新されない点を除いて、すべてが完全に機能します。更新する次のラウンドの時間間隔まで待つ。私は
displayScore.innerHTML = score;
を移動し、右
if文のいずれかでscore++;
後にそれを置く場合onlickがトリガされた後しかし、スコアがすぐに更新します。なぜこれが起こるのですか?この関数はsetIntervalに関係なく独立して機能しませんか?つまり、行単位で実行するため、すぐに更新されるため、次回まで待つ必要はありません。
どのようにsetInterval()をセットアップしましたか? – jeff
あなたの最初のコードブロックでなぜ 'displayScore.innerHTML = score;'がクリックの直後に 'displayScore'を更新するのかは明らかではありません。クリックが発生すると、コールバック内のコードだけが実行されます。 'correct.onclick = function(){....}'は、実行を一時停止せず、要素の 'onclick'コールバックを設定します。 –
ちょうど私のchooseAnswer()関数の上にある単純なsetInterval、window.setInterval(chooseAnswer、5000)です。 –