这个小程序应该让浏览器猜测用户输入的内容。这是“多少手指”。所以我希望它强制用户使用5或更少的数字。
如果输入大于程序可用选项的范围,程序将错误输出并破坏浏览器。我已经尝试以各种方式重新排列脚本的嵌套,以了解JS“思考”的方式。不幸的是,我仍然没有掌握Javascript如何解释代码流。
我在工作中使用SQL,熟悉数学中PEMDAS的逻辑。我认为这是一种类似的情况,我错过了语法的逻辑含义。在我看来,这是一个非常简单的计划。
我不明白为什么当我的输入符合执行IF子句的条件时程序不执行警报。它在Else子句中工作正常。
document.getElementById("guess").onclick = function() {
var a = document.getElementById("myNumber").value;
var b = 6;
var x = Math.random();
x = x * b;
x = Math.floor(x);
if (a > b) {
alert("you don't have that many fingers");
} else {
var gotit = false;
var guesses = 1;
while (gotit == false) {
if (a == x) {
gotit = true;
alert("Success! the answer is" + x + " or " + a + " it took me " + guesses + " guesses!");
} else {
guesses++;
var x = Math.random();
x = x * b;
x = Math.floor(x);
}
}
}
}
<p>How many fingers are you holding up?</p>
<input id="myNumber" />
<button id="guess">Guess!</button>
非常感谢所有帮助。
答案 0 :(得分:2)
您需要将测试更改为if (a >= b)
。代码猜测从0
到5
的数字,因此如果用户输入6
,它将永远不会匹配。但a > b
只有在7
或更高时才会成功 - 6
不超过b
。
document.getElementById("guess").onclick = function() {
var a = document.getElementById("myNumber").value;
var b = 6;
var x = Math.random();
x = x * b;
x = Math.floor(x);
if (a >= b) {
alert("you don't have that many fingers");
} else {
var gotit = false;
var guesses = 1;
while (gotit == false) {
if (a == x) {
gotit = true;
alert("Success! the answer is " + x + " or " + a + " it took me " + guesses + " guesses!");
} else {
guesses++;
var x = Math.random();
x = x * b;
x = Math.floor(x);
}
}
}
}
&#13;
<p>How many fingers are you holding up?</p>
<input id="myNumber" />
<button id="guess">Guess!</button>
&#13;
答案 1 :(得分:1)
首先,你重复你的随机生成,所以我将其分解为一个函数。其次,你的逻辑是错误的(猜测有可能是0个手指以及6个手指的可能性非常小)。
Math.random
实际执行的操作是返回0
和1
之间的值,因此我认为您可以在(0 to 1)*6 = possibly 0 or 6
看到逻辑错误。
所以如果你开始使用计算函数
function getRandomFinger(amountOfFingers) {
var x = Math.random();
x = (x * (amountOfFingers-1))+1; // ((0 to 1)*4)+1 because always at least one finger but possibly 4 more
return Math.round(x);
}
您可以在需要时拨打电话。然后实际定义手指的数量更合适吗?不仅仅是一些看似随机的数字。
var b = 5; // 5 fingers on the hand
添加这些更改,您的代码应该可以正常运行。