Javascript if-else 解释
Javascript if-else interpretation
这个小程序应该让浏览器猜测用户输入的内容。是 "how many fingers"。所以我希望它强制用户使用数字 5 或更少。
如果输入大于程序可用的选项范围,程序将出错并破坏浏览器。我尝试以各种方式重新排列脚本的嵌套,以了解 JS "thinks" 的工作原理。不幸的是,我仍然不了解 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>
非常感谢所有帮助。
您需要将测试更改为 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);
}
}
}
}
<p>How many fingers are you holding up?</p>
<input id="myNumber" />
<button id="guess">Guess!</button>
首先,您要重复随机生成,所以我将其分解为一个函数。其次,你的逻辑是错误的(有可能是0根手指,也有极小的可能是6根手指)。
Math.random
实际上做的是 returns 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
添加那几处更改,您的代码应该可以工作。
这个小程序应该让浏览器猜测用户输入的内容。是 "how many fingers"。所以我希望它强制用户使用数字 5 或更少。
如果输入大于程序可用的选项范围,程序将出错并破坏浏览器。我尝试以各种方式重新排列脚本的嵌套,以了解 JS "thinks" 的工作原理。不幸的是,我仍然不了解 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>
非常感谢所有帮助。
您需要将测试更改为 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);
}
}
}
}
<p>How many fingers are you holding up?</p>
<input id="myNumber" />
<button id="guess">Guess!</button>
首先,您要重复随机生成,所以我将其分解为一个函数。其次,你的逻辑是错误的(有可能是0根手指,也有极小的可能是6根手指)。
Math.random
实际上做的是 returns 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
添加那几处更改,您的代码应该可以工作。