简体   繁体   English

评估 javascript 中的 if 语句

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM