检查Javascript中的多个变量是否为true或false

检查Javascript中的多个变量是否为true或false,javascript,if-statement,conditional,Javascript,If Statement,Conditional,我有一个处理复选框的函数。我现在有一件事要做,我想检查3个变量是否彼此相等(真或假;没关系),如果是这样的话,执行一个命令。我尝试了一些不同的方向,但就是无法让它工作 function dump() { var u = document.getElementById("dump").checked; var x = document.getElementById("tractor").checked; var y = document.getElementById("sw

我有一个处理复选框的函数。我现在有一件事要做,我想检查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";        
    }
} 
函数转储(){
var u=document.getElementById(“转储”)。已选中;
var x=document.getElementById(“拖拉机”)。已选中;
var y=document.getElementById(“清扫器”)。已选中;
var e=document.getElementsByClassName('dump');
var a=document.getElementsByClassName('tractor');
var b=document.getElementsByClassName('sweeper');
对于(变量i=0;i
解决

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

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";
        }
    }
} 
函数转储(){
var u=document.getElementById(“转储”)。已选中;
var x=document.getElementById(“拖拉机”)。已选中;
var y=document.getElementById(“清扫器”)。已选中;
var e=document.getElementsByClassName('dump');
var a=document.getElementsByClassName('tractor');
var b=document.getElementsByClassName('sweeper');
对于(变量i=0;i
您需要大括号:

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"; 
缩进被忽略。

您需要大括号:

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"; 

缩进被忽略。

我认为问题在于缩进,而不是大括号:

/*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语句保护“e”语句,而a&b将始终执行


但无论它做什么,都可能会被以下基于u、x和y的单个值的if语句块所改变。

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

/*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语句保护“e”语句,而a&b将始终执行


但是,无论它做什么,都可能会被以下基于u、x和y的单个值的if语句块所改变。

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

 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";
}

如果没有大括号,代码将有以下行为

 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";
}

你犯了什么错误?如果
s需要使用大括号
{}下次你提问时,请描述你的代码产生的行为以及它打算产生的行为。“不能让它工作”是含糊不清的,这使得人们更难弄清楚到底发生了什么事。
e[i].style.display=u?“块”:“无”所说的“不能让它工作”我的意思是一切都破碎了。我正在使用JSFIDLE来更好地可视化我的问题。基本上,如果该行工作正常,它会将一些容器切换到“display:block;”。因此,容器没有显示“its brokey”。您得到了什么错误?如果
s需要使用大括号{}下次你提问时,请描述你的代码产生的行为以及它打算产生的行为。“不能让它工作”是含糊不清的,这使得人们更难弄清楚到底发生了什么事。
e[i].style.display=u?“块”:“无”所说的“不能让它工作”我的意思是一切都破碎了。我正在使用JSFIDLE来更好地可视化我的问题。基本上,如果该行工作正常,它会将一些容器切换到“display:block;”。因此,集装箱上没有显示“其破碎”。