javascript js中的While循环错误

64jmpszr  于 2023-01-16  发布在  Java
关注(0)|答案(2)|浏览(157)

我创建了一个有限猜测次数的猜测数。我添加了一个递增器来检查用户提交答案的次数。除了循环从最后一次迭代开始和游戏在第一次尝试时结束之外,所有操作似乎都正常。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="script.js" defer></script>
</head>
<body>
  <div>Guess The Number</div>
  <input type="text" id="input">
  <button id="btn">Check Answer</button>
  <p id="guesses" style="display: inline-block;"></p>
  <p id="hint"></p>
</body>
</html>
const input = document.getElementById("input")
const btn = document.getElementById("btn")
const guesses = document.getElementById("guesses")

const rndmNum = Math.floor(Math.random() * 100) + 1;

btn.addEventListener('click', () => {
  if(isNaN(input.value)){
    input.value = "Please type a number"
  } else{
  const hint = document.getElementById("hint");
  let i = 0;
    while (i < 10){
      if(input.value === rndmNum){
        hint.innerHTML = "Congratulations, You guessed correctly!";
        break;
      } else if(input.value > rndmNum){
        hint.innerHTML = "Too High";
      } else{
        hint.innerHTML = "Too low";
      } i++; guesses.innerHTML = "You have guessed " + i + " times";
    }
    if(i === 10){
      hint.innerHTML = "Game Over! The correct number was " + rndmNum;
    } 
  }
})

我试过改变while循环条件中的数字,试过将incrementor移入和移出loops函数,我也试过chatgpt看看它是否能工作,但是没有成功,我真的很感激你的帮助。

gmxoilav

gmxoilav1#

我认为你误解了while循环。循环将为i从1到10的每个示例运行一次,然后当while循环中的条件为假时停止运行。根据你提到的,你根本不想要一个循环,而是将猜测的次数存储到它自己的变量中,并增加该变量,直到达到你的极限。

const rndmNum = Math.floor(Math.random() * 100) + 1;

let numberOfGuesses = 0;

btn.addEventListener('click', () => {
  if (isNaN(input.value)) {
    return input.value = "Please type a number";
  }
  
  const hint = document.getElementById("hint");
      
  if (input.value === rndmNum) {
        hint.innerHTML = "Congratulations, You guessed correctly!";
        return;
  } else if (input.value > rndmNum) {
        hint.innerHTML = "Too High";
  } else {
        hint.innerHTML = "Too low";
   }

   numberOfGuesses++;

   guesses.innerHTML = "You have guessed " + numberOfGuesses + " times";
   
   if (numberOfGuesses === 10) {
      hint.innerHTML = "Game Over! The correct number was " + rndmNum;
   }
})
xzabzqsa

xzabzqsa2#

我相信这就是你想要完成的,为什么它不能和循环一起工作,因为它会运行十次,只要点击一次按钮。

const input = document.getElementById("input")
const btn = document.getElementById("btn")
const guesses = document.getElementById("guesses")
const rndmNum = Math.floor(Math.random() * 100) + 1;

//keep track of guess count
let count = 0;

//event listner to check the users answer
btn.addEventListener("click", checkAnswer)

//this function will check for answers or display game over
function checkAnswer(){

    if(count > 9){
        hint.innerHTML = "Game Over! The correct number was " + rndmNum;
    } else if(input.value == rndmNum){
        hint.innerHTML = "Congratulations, You guessed correctly!";
    } else if(input.value > rndmNum){
        hint.innerHTML = "Too High";
    } else {
        hint.innerHTML = "Too low";
    }

    count++
    guesses.innerHTML = "You have guessed " + count + " times";
}

相关问题