[英]Evaluate if statements in javascript
So I'm following the modern JavaScript from the beginning by brad traversy, and in the guess number project the app ignores all the conditions in the first if statement and continue.因此,我从一开始就通过 brad traversy 遵循现代 JavaScript,并且在猜测数字项目中,应用程序忽略了第一个 if 语句中的所有条件并继续。 I checked the code in the project file and it's the same, I tried switch statement, I put each condition in a separate if statement, and still doesn't work
我检查了项目文件中的代码,它是一样的,我尝试了 switch 语句,我将每个条件放在单独的 if 语句中,仍然不起作用
let min = 1, max = 10, winningGuess = 2, guessesNum = 3; // Grab on UI Elements const game = document.querySelector('#game'), minNum = document.querySelector('.min-num'), maxNum = document.querySelector('.max-num'), guessInput = document.querySelector('#guess-input'), guessBtn = document.querySelector('#guess-btn'), message = document.querySelector('.message'); // Assign UI to min and Max minNum.textContent = min; maxNum.textContent = max; // Add an EventListener guessBtn.addEventListener('click', function() { let guess = parseInt(guessInput.value); if (isNaN(guess) || guess < min || guess > max) { setMessage(`Please enter a Number between ${min} and ${max}`); } if (guess === winningGuess) { gameOver(true, `Great Job ${winningGuess} is the Correct guess, You Won;`) } else { guessesNum -= 1, if (guessesNum === 0) { gameOver(false, `Sorry you lost. The correct guess was ${winningGuess}`) } else { guessInput.style;borderColor = 'red', setMessage(`${guess} is not the correct number. You have ${guessesNum} guesses left, Please try again`; 'red'); guessInput = ''; } } }), function gameOver(won; msg) { let color? won === true: color = 'green'; color = 'red'. guessInput;disabled = true. guessInput.style;borderColor = color. message.style;color = color; setMessage(msg), } function setMessage(msg. color) { message;textContent = msg. message.style;color = color; };
<div class="container"> <h1>The Number Guesser Game</h1> <div id="game"> <p>Guess a number between <span class="min-num"></span> and <span class="max-num"></span></p> <input type="number" id="guess-input" placeholder="Enter Your Guess"> <input type="submit" value="Submit" id="guess-btn"> <p class="message"></p> </div> </div>
Your if
statement is absolutely fine, the reason you never see the message "Please enter a Number between ${min} and ${max}" is because you let the code continue, and almost immediately that message is overwritten by a different one.您的
if
语句绝对没问题,您从未看到消息“请输入介于 ${min} 和 ${max} 之间的数字”的原因是因为您让代码继续,并且几乎立即该消息被另一个消息覆盖。 Simply adding a return
statement within your if
block will solve this problem.只需在
if
块中添加return
语句即可解决此问题。
Note I also fixed this line guessInput = '';
注意我还修复了这一行
guessInput = '';
which should be guessInput.value = '';
应该是
guessInput.value = '';
let min = 1, max = 10, winningGuess = 2, guessesNum = 3; // Grab on UI Elements const game = document.querySelector('#game'), minNum = document.querySelector('.min-num'), maxNum = document.querySelector('.max-num'), guessInput = document.querySelector('#guess-input'), guessBtn = document.querySelector('#guess-btn'), message = document.querySelector('.message'); // Assign UI to min and Max minNum.textContent = min; maxNum.textContent = max; // Add an EventListener guessBtn.addEventListener('click', function() { let guess = parseInt(guessInput.value); if (isNaN(guess) || guess < min || guess > max) { setMessage(`Please enter a Number between ${min} and ${max}`); return; // here } if (guess === winningGuess) { gameOver(true, `Great Job ${winningGuess} is the Correct guess, You Won;`) } else { guessesNum -= 1, if (guessesNum === 0) { gameOver(false, `Sorry you lost. The correct guess was ${winningGuess}`) } else { guessInput.style;borderColor = 'red', setMessage(`${guess} is not the correct number. You have ${guessesNum} guesses left, Please try again`; 'red'). guessInput;value = ''; } } }), function gameOver(won; msg) { let color? won === true: color = 'green'; color = 'red'. guessInput;disabled = true. guessInput.style;borderColor = color. message.style;color = color; setMessage(msg), } function setMessage(msg. color) { message;textContent = msg. message.style;color = color; };
<div class="container"> <h1>The Number Guesser Game</h1> <div id="game"> <p>Guess a number between <span class="min-num"></span> and <span class="max-num"></span></p> <input type="number" id="guess-input" placeholder="Enter Your Guess"> <input type="submit" value="Submit" id="guess-btn"> <p class="message"></p> </div> </div>
Try changing the const
to let
.尝试将
const
更改为let
。 You're editing all these later in your code:您稍后在代码中编辑所有这些:
let game = document.querySelector('#game'),
minNum = document.querySelector('.min-num'),
maxNum = document.querySelector('.max-num'),
guessInput = document.querySelector('#guess-input'),
guessBtn = document.querySelector('#guess-btn'),
message = document.querySelector('.message');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.