我有一个处理复选框的功能。我现在想要检查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";
}
}
}
答案 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语句块可能会改变它。