![](/img/trans.png)
[英]How would I void a called function within an event Handler function from running once a condition is met in JavaScript?
[英]How can I prevent IF statement from running once the condition is met
我正在制作一個游戲,玩家必須輸入數字來猜測一個國家的人口,但我在計算他們的分數時遇到了問題。 我有這個 if 語句:
if (player1 === "" || player2 === "") {
resultSpan.innerHTML = "One or two empty values";
} else {
resultSpan.innerHTML = `The correct number is ${population.toLocaleString()}`;
let playerWin = document.querySelector(".results-player-win");
if (
Math.abs(parseInt(population) - playerOneTotal) <
Math.abs(parseInt(population) - playerTwoTotal)
) {
playerWin.innerText = "Player 1 wins!";
playerOneScore++;
}
if (
Math.abs(parseInt(population) - playerOneTotal) >
Math.abs(parseInt(population) - playerTwoTotal)
) {
playerWin.innerText = "Player 2 wins!";
playerTwoScore++;
}
document.getElementById(
"current-score"
).innerHTML = `P1: ${playerOneScore} --- P2: ${playerTwoScore}`;
}
但是,有時不是將分數增加 1,而是 2 或 3。 我猜這是因為預先調用了另一個eventListener
。 但是,我找不到將它們完全分開的方法,因為它們都需要使用相同的總體變量才能正確計算分數。
我試過在 IF 語句中添加this.remove()
,但它刪除了按鈕。 我也試過e.stopImmediatePropagation();
並創建一個變量isFirst
,然后設置為 true 然后 false,但是它們在第二次執行時完全阻止了代碼。
為了更清楚,我還發布了一個JSFiddle 。
我設法通過初始化變量來解決這個問題
playerOneScore = 0;
playerTwoScore = 0
; (跟蹤分數的那些)在全球環境中。 我還將{ once: true }
添加到跟蹤用戶輸入/分數的偵聽器中,因為多次單擊按鈕會導致不必要的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.