JavaScript 中的概率游戏中的 If 语句未移动到 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 进行类型检查,结果为 false。而是使用 != or ==

  2. 将输入的字符串转换为数字再进行比较,这可以通过Number(enteredNumber)let number = +enteredNumber

    来完成