使用JavaScript切换复选框

Ker*_*vvv 4 html javascript 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; 
                }   
            }
        }  
    } 
}
Run Code Online (Sandbox Code Playgroud)

Ali*_*ahi 36

它可以更容易:

inputs[i].checked = !inputs[i].checked;
Run Code Online (Sandbox Code Playgroud)

  • 这比接受的答案要好得多. (5认同)

Ale*_*ies 11

这个版本很短,"看起来"更像是一个切换:

inputs[i].checked ^= 1;
Run Code Online (Sandbox Code Playgroud)

这使用了XOR Compound赋值运算符,因为它可以用于否定¬A ? A ^ 1.它也不需要inputs[i]第二次查找.

  • 虽然这“有效”,但我认为这不是一个好主意 - 在不需要时使用按位运算符会降低可读性,更不透明的代码,正如您在第一条评论中看到的那样。它会让人们感到困惑。可读的代码比简洁的代码更重要,除非你是代码高手。 (4认同)
  • `^`是XOR运算符;如果“ a”和“ b”具有不同的值,则“ a ^ b”为true,否则为false。如果a是true,则a ^ = true(相当于a = a ^ true),则为false;如果a为false,则为true。 (3认同)
  • 哇!以前从未见过。那运算符^ =是什么? (2认同)
  • 我不同意。早在 CS 的第一周就介绍了 XOR。如果“XOR 1”对于非初学者程序员来说是“不透明”或“不可读”的,那么他们可能永远不应该接近任何类型的性能或安全关键代码。 (2认同)

Irk*_*der 5

单等号是分配,双/三等号是相等。您需要在if / else块中使用双倍或三倍等于。

    if(inputs[i].checked == false) {
        inputs[i].checked = true; 
    }
    else {
        if(inputs[i].checked == true) {
            inputs[i].checked = false; 
         }   
    }
Run Code Online (Sandbox Code Playgroud)

  • 实际上,else语句中的if语句完全没有必要。只需在else内部执行“ inputs [i] .checked = false;”即可。 (2认同)