在Javascript中检查多个变量是真还是假

时间:2014-07-23 05:37:54

标签: javascript if-statement conditional

我有一个处理复选框的功能。我现在想要检查3个变量是否彼此相等(无论是真还是假;它并不重要),如果是这样的话,我会执行一个命令。我尝试了几个不同的方向,但却无法让它发挥作用。

function dump() {
    var u = document.getElementById("dump").checked;
    var x = document.getElementById("tractor").checked;
    var y = document.getElementById("sweeper").checked;
    var e = document.getElementsByClassName('dump');
    var a = document.getElementsByClassName('tractor');
    var b = document.getElementsByClassName('sweeper');

    for (var i = 0; i < e.length; i++) {
        /*This is the section*/
        if (u==x && x==y)
            e[i].style.display = "block";
            a[i].style.display = "block";
            b[i].style.display = "block";
        /*End*/
        if (u)
            e[i].style.display = "block";
        else
            e[i].style.display = 'none';
        if (x)
            a[i].style.display = "block";
        else
            a[i].style.display = 'none';
        if (y)
            b[i].style.display = "block";
        else
            b[i].style.display = "none";        
    }
} 

解决

我真正的问题是我需要将该语句移到函数的末尾。我还添加了括号以便进行测量。

function dump() {
    var u = document.getElementById("dump").checked;
    var x = document.getElementById("tractor").checked;
    var y = document.getElementById("sweeper").checked;
    var e = document.getElementsByClassName('dump');
    var a = document.getElementsByClassName('tractor');
    var b = document.getElementsByClassName('sweeper');

    for (var i = 0; i < e.length; i++) {
        if (u){
            e[i].style.display = "block";
        }
        else{
            e[i].style.display = 'none';
        }
        if (x){
            a[i].style.display = "block";
        }
        else{
            a[i].style.display = 'none';
        }
        if (y){
            b[i].style.display = "block";
        }
        else{
            b[i].style.display = "none";        
        }
        if (u==x && x==y){
            e[i].style.display = "block";
            a[i].style.display = "block";
            b[i].style.display = "block";
        }
    }
} 

3 个答案:

答案 0 :(得分:4)

你需要大括号:

if (u==x && x==y) {
    e[i].style.display = "block";
    a[i].style.display = "block";
    b[i].style.display = "block";
}

否则,if仅附加到下一个语句

e[i].style.display = "block"; 

缩进被忽略。

答案 1 :(得分:1)

如果没有花括号,您的代码将具有以下行为

 if(u==x)
   statement //if condition applies to only first statement
   statement //will act as assignments
   statement //

因此你应该在这里花括号

if(ui==x && x==y){
    e[i].style.display = "block";
    a[i].style.display = "block";
    b[i].style.display = "block";
}

答案 2 :(得分:0)

我认为问题是你有缩进,而不是大括号:

/*This is the section*/
if (u==x && x==y){
    e[i].style.display = "block";
    a[i].style.display = "block";
    b[i].style.display = "block";
}
/*End*/

原始代码只会保护&#34; e&#34; if语句和&amp;声明b总会执行。

但无论如何,根据u,x和y的各个值,下面的if语句块可能会改变它。