簡體   English   中英

在 JavaScript 的機會游戲中,如果語句沒有移動到 else 語句

[英]If statements not moving to the else statement in a game of chance in JavaScript

您好,我正在用 JavaScript 寫一個機會游戲,出於某種原因,即使給出了正確的答案,它也會顯示您輸了。 我試圖改變 if 條件,但不夠精通,無法弄清楚。 這是我第一次在這里問一個問題,如果您需要更多信息,我將提供我所知道的,如果已經回答了,我找不到或沒有將其識別為答案,就像我說的我還是很新在一般的編碼。

這是 HTML

 <h3>CAN YOU GUESS MY NUMBER!!</h3>
    <h4>You get two guess and my number is random every time you try. Goodluck!</h4>
    <input type="text" onkeyup="guessOneCheck(this)" placeholder="enter your guess 1-10" id="guessOne" maxlength="2">
    <input type="text" onkeyup="guessTwoCheck(this)" placeholder="enter your guess 1-10" id="guessTwo" maxlength="2">
    <button id="submit__Guesses" onclick="bothWrong()">SUBMIT GUESSES</button>
    <div id="guessAnswer"></div>
 <script src="main.js"></script>

這是 javascript

let guessOne = ''
let guessTwo = ''

const guessOneCheck = (g1) => {
  guessOne = g1.value
  console.log(g1.value)
}

const guessTwoCheck = (g2) => {
  guessTwo = g2.value
  console.log(g2.value)
}

const bothWrong = () =>{
  let randomNum = Math.floor((Math.random() *10) + 1);
  console.log(randomNum)

  if(guessOne !== randomNum && guessTwo !== randomNum){
    document.getElementById('guessAnswer').innerHTML = 'HaHa you lose better luck next time!! My number was' + ' ' + randomNum;
  } else if(guessOne == randomNum || guessTwo == randomNum){
    document.getElementById('guessAnswer').innerHTML = 'What! No you cheated, or omg are you a psychic!!! My number was' + ' ' + randomNum;
  }
}

這里的錯誤是這一行:

if (guessOne !== randomNum && guessTwo !== randomNum) {

!==是一個比較值和類型的嚴格檢查。 雖然值可能是正確的,但類型不會是因為您從輸入字段中獲取guessOne 和guessTwo,這意味着它們是字符串 - 而 randomNum 是 Number 類型。 您必須將這些轉換為數字,您可以這樣做:

const guessOneCheck = (g1) => {
  guessOne = +g1.value
  console.log(g1.value)
}

const guessTwoCheck = (g2) => {
  guessTwo = +g2.value
  console.log(g2.value)
}

之后它應該可以正常工作

你的guessOne 和guessTwo 是字符串。 如果你 console.log 它你會看到例如"1" 您需要使用+guessOne+guessTwo將字符串轉換為數字:

  if(+guessOne !== randomNum && +guessTwo !== randomNum){
    document.getElementById('guessAnswer').innerHTML = 'HaHa you lose better luck next time!! My number was' + ' ' + randomNum;
  } else if(+guessOne == randomNum || +guessTwo == randomNum){
    document.getElementById('guessAnswer').innerHTML = 'What! No you cheated, or omg are you a psychic!!! My number was' + ' ' + randomNum;
  }

此錯誤有兩種解決方案。

  1. 不要使用 '===' 或 '.==' 進行比較,它也會導致類型檢查。 表示如果輸入的數字是“3”(這是一個字符串類型),並且您的比較將與數字 3 進行比較,導致類型檢查發生錯誤。 而是使用!= or ==

  2. 在比較之前將輸入的字符串轉換為數字,這可以通過Number(enteredNumber)let number = +enteredNumber

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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