我正在尝试创建一个Javascript猜谜游戏,用户有10次尝试猜测1-999之间的数字。我必须使用验证号码,使用循环并在用户获得匹配时显示警报,以及何时用尽猜测。使用数字45仅用于测试。应使用innerHTML对每个猜测进行编号和显示。问题是,计数器停留在零。不知道我错过了什么!代码如下:
function myFunction() {
var userInput = document.getElementById("input").value;
var randomNum = 45;
// test for valid input number from 1 to 999
if (userInput < 0 || userInput > 999) {
alert("Your number must be from 1 to 999");
} else {
alert("Input OK");
}
var counter = 0;
while (counter < 10) {
counter++;
if (userInput == randomNum) {
alert("You win!");
}
if (userInput > randomNum) {
document.getElementById("loopResults").innerHTML += counter + "." + " Your answer: " + userInput + "." + " Guess lower! < br / > ";
alert("You have " + counter + " guesses left.");
} else if (userInput < randomNum) {
document.getElementById("loopResults").innerHTML += counter + "." + " Your answer: " + userInput + "." + "Guess higher! < br / > ";
alert("You have " + counter + " guesses left.");
}
break;
} // end while loop
} // end function myFunction()
答案 0 :(得分:3)
这一行
var counter = 0;
每次调用函数时,将计数器重置为0。一个修复可能是以这种方式将其设置为全局变量
counter = 0; // note no var keyword
function myFunction() {...}
然后你在函数中对counter的调用将引用全局变量。
另外,你的while循环没有意义。它应该是一个简单的if语句来查看counter&gt; = 10.在正确设置计数器变量后想一想这个逻辑。
答案 1 :(得分:1)
逐步执行while循环中的逻辑。
每个循环中递增的计数器变量已经导致循环退出。
在while循环结束时设置“break”意味着您可以保证在第一次
之后退出答案 2 :(得分:1)
当你想要退出时,只有break
你的循环。在您的情况下,这可能是用户猜到了数字或没有尝试。
break
命令立即结束循环。有关详细信息,请查看the MDN docs!