Javascript 警报不会关闭(while 循环)

Javascript alert wont dismiss (while loop)

我正在尝试制作一个 "How many fingers are you holding up" 页面,如果我在框中输入 1-5,它可以工作,但如果我输入超过 5,警报不会消失,谁能帮助我这个?抱歉这个菜鸟问题 任何帮助将不胜感激!谢谢!!

document.getElementById("guess").onclick = function() {

  var gotIt = false;
  var guesess = 1;
  var x;

  while (gotIt == false) {
    x = Math.random();
    x = 6 * x;
    x = Math.floor(x);

    if (document.getElementById("myNumber").value == x) {
      gotIt = true;
    } else {
      if (guesess == 20) {
        alert("i give up");
      } else {
        guesses++;
      }
    }
  }
  alert("I got it! It was a " + x + "It only took me " + guesess + "guesses");
}
<p>How many fingers are you holding up?</p>
<input id="myNumber" />
<button id="guess">Guess!!</button>

第一期,修正你的打字错误:你混合使用 guesessguesses 它们必须相同。

第二个问题,一旦代码为'giving up',它就不会设置标志来打破循环。您可以在警报后使用 break 来打破循环:

alert("i give up");
break;

第三个问题,如果没有找到匹配项(即 gotIt 仍然是错误的),您需要进行检查以确保不显示 "i got it" 消息:

if (gotIt) 
    alert("I got it! It was a " + x + "It only took me " + guesess + "guesses");

(或者,您可以将此警报放在设置 gotIt = true 的同一个 if 块中)

Here is a working example

最好将输入转换为您 您可以尝试替换您的 java 脚本代码,以便您可以控制转换问题,并将您的

alert("I got it! It was a " + x + " It only took me " + guesess + "guesses");

在if(x == n)里面,因为当随机数匹配输入keyed时会弹出alert, 试试这个代码:

document.getElementById("guess").onclick = function() {
  var gotIt = false;
  var guesess = 1;
  var x;
  var num=parseInt(document.getElementById('myNumber').value);

  while (gotIt == false) {
    x = Math.random();
    x = 6 * x;
    x = Math.floor(x);

    if (x == num) {
      gotIt = true;
        alert("I got it! It was a " + x + " It only took me " + guesess + "guesses");
    } else {
      if (guesess == 20) {
        alert("i give up");
          break;
      } else {
        guesess++;
      }
    }
  }

}