使用JavaScript切换复选框

时间:2016-05-17 21:36:30

标签: javascript html if-statement

我有这个工作,但我没有保存,无法复制。我正在尝试使用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; 
                }   
            }
        }  
    } 
}

5 个答案:

答案 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;