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;
}
这个错误有两种解决方法。
不要使用“===”或“!==”进行比较。它还会导致类型检查,这意味着如果输入的数字是“3”(这是一个字符串类型)并且您的比较将与数字 3 进行类型检查,结果为 false。而是使用
!= or ==
将输入的字符串转换为数字再进行比较,这可以通过Number(enteredNumber)
或let number = +enteredNumber
来完成
你好,我正在用 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;
}
这个错误有两种解决方法。
不要使用“===”或“!==”进行比较。它还会导致类型检查,这意味着如果输入的数字是“3”(这是一个字符串类型)并且您的比较将与数字 3 进行类型检查,结果为 false。而是使用
!= or ==
将输入的字符串转换为数字再进行比较,这可以通过
来完成Number(enteredNumber)
或let number = +enteredNumber