如果声明彼此缠绕不起作用

时间:2017-09-26 10:36:24

标签: javascript html html5 if-statement

我有一点问题,涉及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>

3 个答案:

答案 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{
...