簡體   English   中英

一旦滿足條件,如何防止 IF 語句運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM