【发布时间】:2016-03-21 09:57:51
【问题描述】:
我正在尝试用 Javascript 创建一个随机数猜谜游戏,它将用户输入与使用 math.random 方法生成的数字进行比较。我对如何以正确的方式设置计数器感到困惑。我必须验证这个数字,用“太高”、“太低”或“你赢”来显示每个猜测,然后在最后显示“秘密”数字。不知道我做错了什么!现在它正在覆盖每个答案,并且计数器保持在#5。
function myFunction() {
var userInput = document.getElementById("text").value;
// 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");
} // end function myFunction
var randomNum = Math.floor(Math.random()* 999)+1;
var userInput = document.getElementById("text").value;
var counter = 0;
var totalGuesses = 0;
while (totalGuesses <= 5) {
counter++;
document.getElementById('loopResults').innerHTML = "<p>You have made" + counter + "guesses</p>";
if (userInput < randomNum) {
document.getElementById('loopResults').innerHTML += "<p>Your guess is too low!</p>";
} else {
document.getElementById('loopResults').innerHTML += "<p>Your guess is too high!</p>";
}
}
}
</script>
</head>
<body>
<h1>Guessing Game</h1>
<p id="loopResults"></p>
<form action="" method="post" enctype="multipart/form-data" name="userData">
<input name="userInput" id="text" type="text" size="10" /> - Enter a number from 1-999!</form>
<p><span style="background-color:#066aff; color: #ffffff; padding: 5px;" onclick="myFunction();" >enter number</span>
</p>
</body>
【问题讨论】:
-
为什么你同时拥有
counter和totalGuesses变量?看起来您将有一个无限循环,因为您永远不会增加totalGuesses。此外,您永远不会测试当前猜测是否正确,您只检查它是否太低,否则假设它太高。此外,用户永远没有机会改变他们的猜测。 -
问题是你的
while loop不依赖于点击事件,所以它一直在运行。您应该将counter++;和totalGuesses++放在点击处理程序中,并检查totalGuess不高于5 -
我认为这就是我感到困惑的地方......这可能应该是totalGuesses++。这超出了我的想象。 :)
-
啊好的...谢谢!
标签: javascript