html 使用JavaScript切换复选框

ruyhziif  于 5个月前  发布在  Java
关注(0)|答案(5)|浏览(48)

我有这个工作,但我没有保存,无法复制。我试图切换复选框使用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; 
                }   
            }
        }  
    } 
}

字符串

jslywgbw

jslywgbw1#

它可以更容易:

inputs[i].checked = !inputs[i].checked;

字符串

wko9yo5t

wko9yo5t2#

如何使用一个操作符,这是定义为切换布尔使用1作为第二个操作数?

inputs[i].checked ^= 1;

字符串
这使用了XOR复合赋值运算符,它切换了布尔值,因为在正式的布尔数学中,¬A ≡ A ^ 1
(Read as:“Not(¬)A is equivalent()to A XOR(^)ed艾德with literal 1”)
它也不需要第二次使用inputs[i]
2020年更新:您还可以通过使用forEach函数删除复选框来消除for循环和所有这些var,从而将函数体缩减为:

document.querySelectorAll('input[type="checkbox"]').forEach(e => e.checked ^= 1);

iibxawm4

iibxawm43#

单等于是赋值,双等于/三等于是相等。你需要在if/else块中使用双等于或三等于。

if(inputs[i].checked == false) {
        inputs[i].checked = true; 
    }
    else {
        if(inputs[i].checked == true) {
            inputs[i].checked = false; 
         }   
    }

字符串

4dc9hkyq

4dc9hkyq4#

另一个正确答案可能是:

inputs[i].checked = input.checked ? false : true;

字符串

bkkx9g8r

bkkx9g8r5#

我想我会补充这一点,因为它使我找到了一个答案,我正在寻找检查所有复选框与书签。使用位运算符工作就像一个魅力在IE 11和Chrome。还没有尝试过它在其他浏览器。

javascript:(function(){var chbxs=document.querySelectorAll('input');for(i in chbxs){chbxs[i].checked^=1;}})();

字符串

相关问题