如何取消选中纯JavaScript中的复选框?

De *_*nte 39 html javascript checkbox

这是HTML代码:

<div class="text">
   <input value="true" type="checkbox" checked="" name="copyNewAddrToBilling"><label>
Run Code Online (Sandbox Code Playgroud)

我想将值更改为false.或者只需取消选中该复选框即可.我想在纯JavaScript中执行此操作,而不使用外部库(没有jQuery等)

Str*_*ngs 65

<html>
    <body>
        <input id="check1" type="checkbox" checked="" name="copyNewAddrToBilling">
    </body>
    <script language="javascript">
        document.getElementById("check1").checked = true;
        document.getElementById("check1").checked = false;
    </script>
</html>
Run Code Online (Sandbox Code Playgroud)

我已经将语言属性添加到了脚本元素中,但这是不必要的,因为所有浏览器都将此作为默认值使用,但毫无疑问,这个示例显示了什么.

如果你想使用javascript访问元素,它有一组非常有限的GetElement*函数.因此,您需要养成为每个元素赋予UNIQUE id属性的习惯.

  • 此外,DOM并不难以遍历.是的,很难尝试维护像someElement.childNodes [2] .getElementsByTagName('span')[1]这样荒谬的东西,但是,它有助于为理解DOM操作铺平道路.我喜欢jQuery,但并不是每个简单任务都需要它; 在几乎任何合理的情况下选择一个元素并不困难.JavaScript有许多选择器可用,不要忘记你可以存储对节点的引用; 如果您动态创建元素,这一点尤其容易. (6认同)

she*_*nan 10

推荐,没有jQuery:

提供您<input>的ID并参考.此外,如果您希望复选框开始未选中,请删除标记的checked=""一部分<input>.那就是:

document.getElementById("my-checkbox").checked = true;
Run Code Online (Sandbox Code Playgroud)

纯JavaScript,没有元素ID(#1):

var inputs = document.getElementsByTagName('input');

for(var i = 0; i<inputs.length; i++){

  if(typeof inputs[i].getAttribute === 'function' && inputs[i].getAttribute('name') === 'copyNewAddrToBilling'){

    inputs[i].checked = true;

    break;

  }
}
Run Code Online (Sandbox Code Playgroud)

纯Javascript,没有元素ID(#2):

document.querySelectorAll('.text input[name="copyNewAddrToBilling"]')[0].checked = true;

document.querySelector('.text input[name="copyNewAddrToBilling"]').checked = true;
Run Code Online (Sandbox Code Playgroud)

请注意,这些浏览器支持querySelectorAllquerySelector方法:IE8 +,Chrome 4 +,Safari 3.1 +,Firefox 3.5+以及所有移动浏览器.

如果元素可能丢失,您应该测试它的存在,例如:

var input = document.querySelector('.text input[name="copyNewAddrToBilling"]');
if (!input) { return; }
Run Code Online (Sandbox Code Playgroud)

使用jQuery:

$('.text input[name="copyNewAddrToBilling"]').prop('checked', true);
Run Code Online (Sandbox Code Playgroud)

  • jQuery没有被标记 (2认同)

Yan*_*You 5

还有另一种方法可以做到这一点:

//elem - get the checkbox element and then
elem.setAttribute('checked', 'checked'); //check
elem.removeAttribute('checked'); //uncheck
Run Code Online (Sandbox Code Playgroud)