我有一点问题,涉及if语句。
function voegelfelder(){
var va = document.getElementById("voegel").value;
if(va >= "41"){
alert("Number too high");
}
else{
document.getElementById("CB").hidden = true;
document.getElementById("CRB").hidden = false;
if(va >= "1"){
document.getElementById("v1x").hidden = false;
document.getElementById("v1y").hidden = false;
document.getElementById("v1r").hidden = false;
if(va >= "2") {
document.getElementById("v2x").hidden = false;
document.getElementById("v2y").hidden = false;
document.getElementById("v2r").hidden = false;
if(va >= "3") {
document.getElementById("v3x").hidden = false;
document.getElementById("v3y").hidden = false;
document.getElementById("v3r").hidden = false;
if(va >= "4") {
document.getElementById("v4x").hidden = false;
document.getElementById("v4y").hidden = false;
document.getElementById("v4r").hidden = false;
if(va >= "5") {
document.getElementById("v5x").hidden = false;
document.getElementById("v5y").hidden = false;
document.getElementById("v5r").hidden = false;
if(va >= "6") {
document.getElementById("v6x").hidden = false;
document.getElementById("v6y").hidden = false;
document.getElementById("v6r").hidden = false;
}
}
}
}
}
}
}
}
在那个例子中,我检查文本字段中的数字是1还是2或3或4 ......,如果它是3为示例它应该做它在1,2和3中做的所有事情那是有效的,但是如果我在那里键入5,它说"数字太高"但是只有在数量超过40时才会发生。 顺便说一句,我拥有它需要的一切:
<input type="text" placeholder="Vogel 1 X" id="v1x" hidden="hidden">
<input type="text" placeholder="Vogel 1 Y" id="v1y" hidden="hidden">
<input type="text" placeholder="Vogel 1 Richtung" id="v1r" hidden="hidden"><br>
<input type="text" placeholder="Vogel 2 X" id="v2x" hidden="hidden">
<input type="text" placeholder="Vogel 2 Y" id="v2y" hidden="hidden">
<input type="text" placeholder="Vogel 2 Richtung" id="v2r" hidden="hidden"><br>
<input type="text" placeholder="Vogel 3 X" id="v3x" hidden="hidden">
<input type="text" placeholder="Vogel 3 Y" id="v3y" hidden="hidden">
<input type="text" placeholder="Vogel 3 Richtung" id="v3r" hidden="hidden"><br>
<input type="text" placeholder="Vogel 4 X" id="v4x" hidden="hidden">
<input type="text" placeholder="Vogel 4 Y" id="v4y" hidden="hidden">
<input type="text" placeholder="Vogel 4 Richtung" id="v4r" hidden="hidden"><br>
<input type="text" placeholder="Vogel 5 X" id="v5x" hidden="hidden">
<input type="text" placeholder="Vogel 5 Y" id="v5y" hidden="hidden">
<input type="text" placeholder="Vogel 5 Richtung" id="v5r" hidden="hidden"><br>
<input type="text" placeholder="Vogel 6 X" id="v6x" hidden="hidden">
<input type="text" placeholder="Vogel 6 Y" id="v6y" hidden="hidden">
<input type="text" placeholder="Vogel 6 Richtung" id="v6r" hidden="hidden"><br>
<input type="text" placeholder="Vogel 7 X" id="v7x" hidden="hidden">
<input type="text" placeholder="Vogel 7 Y" id="v7y" hidden="hidden">
<input type="text" placeholder="Vogel 7 Richtung" id="v7r" hidden="hidden"><br>
<input type="text" placeholder="Vogel 8 X" id="v8x" hidden="hidden">
<input type="text" placeholder="Vogel 8 Y" id="v8y" hidden="hidden">
<input type="text" placeholder="Vogel 8 Richtung" id="v8r" hidden="hidden"><br>
答案 0 :(得分:3)
您正在比较字符串。 "5"
确实是>
"41"
,因为当你比较字符串时,你是按字典顺序进行的。这是一个逐字母的过程,一旦找到不匹配的字母就会停止。由于"5"
为>
"4"
,"5"
大于以"4"
开头的任何字符串。
解析用户的号码,并在if
语句中键入数字,而不是字符串。
答案 1 :(得分:1)
当您输入5
并且数字太高时,这表示您正在进行字符串比较(因为您将其与41
进行比较)。你必须先将它转换为整数,即:
var va = +document.getElementById("voegel").value;
通过在前面添加+
,您将其类型强制转换为Number
。此外,不需要执行过多的if / else嵌套。如果您希望每个数字都应用于其前面的所有选择器(例如3
将取消隐藏1,2和3),您可以使用以下逻辑:
function voegelfelder(){
var va = document.getElementById("voegel").value;
// Maximum cutoff at 41
if(va >= "41"){
alert("Number too high");
return;
}
document.getElementById("CB").hidden = true;
document.getElementById("CRB").hidden = false;
// Iteratively loop through all numbers before
for (var i = 1; i <= va; i++) {
document.getElementById("v" + i + "x").hidden = false;
document.getElementById("v" + i + "y").hidden = false;
document.getElementById("v" + i + "r").hidden = false;
}
}
答案 2 :(得分:1)
不要比较字符串和数字,确保您所比较的内容具有相同的类型,否则您将受到各种rules of conversion的不一致。
您可以使用parseInt
从字符串输入中获取整数,并使用代码中的整数进行比较:
var va = parseInt(document.getElementById("voegel").value);
if(va >= 41){ //notice how the "" is gone
alert("Number too high");
} else{
...