我有这个工作,但我没有保存,无法复制。我正在尝试使用if else
切换复选框。我究竟做错了什么。
我认为会起作用:
function myForm() {
var inputs = document.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].type == "checkbox") {
if(inputs[i].checked = false) {
inputs[i].checked = true;
} else {
if(inputs[i].checked = true) {
inputs[i].checked = false;
}
}
}
}
}
答案 0 :(得分:24)
这可能更容易:
inputs[i].checked = !inputs[i].checked;
答案 1 :(得分:7)
如何使用定义为使用1作为第二个操作数来切换布尔值的运算符?
inputs[i].checked ^= 1;
这使用XOR Compound assigment operator,并且由于¬A ≡ A ^ 1
而切换布尔值。
它也不需要第二次查询inputs[i]
。
答案 2 :(得分:4)
单个等于赋值,double / triple等于赋值。你需要在if / else块中使用double或triple equals。
if(inputs[i].checked == false) {
inputs[i].checked = true;
}
else {
if(inputs[i].checked == true) {
inputs[i].checked = false;
}
}
答案 3 :(得分:0)
我想我要补充一点,因为它使我想出一个答案,我正在检查所有带有书签的复选框。在IE 11和Chrome中,使用按位运算符的工作就像一个魅力。尚未在其他浏览器中尝试过。
javascript:(function(){var chbxs=document.querySelectorAll('input');for(i in chbxs){chbxs[i].checked^=1;}})();
答案 4 :(得分:-1)
另一个正确答案可能是:
inputs[i].checked = input.checked ? false : true;