getElementByID中的getElementsByTagName

时间:2014-03-02 23:30:33

标签: javascript dom

我正在尝试抓取名为“states”的div中的所有标记,然后取消选中它们(它们都是复选框)。

document.getElementById("states").getElementsByTagName("input").checked = false;

出于某种原因,它无法正常工作,但如果我给每个ID并为每个ID使用此代码,它是否有效:

document.getElementById("checkboxName").checked = false;

有什么想法?

2 个答案:

答案 0 :(得分:1)

getElementsByName()返回NodeList。 NodeList没有'checked'属性,是节点的集合。使用jQuery,你要做的事情很容易。但是你可以按照自己的方式进行操作,只需使用for循环枚举NodeList(NodeList类似于Array)并更改checked属性。

var checkboxes = document.getElementById("states").getElementsByTagName("input");
for (var i = 0; i < checkboxes.length; i++) checkboxes[i].checked = false;

使用jQuery:

$('#states input[type="checkbox"]').prop('checked', false);

检查here

答案 1 :(得分:1)

getElementsByTagName返回NodeList。在它上面你可以只做一个简单的for循环并为每个元素设置检查。为它们中的每一个设置相同的id并不是一种正确的方法,因为在语义上不应该有多个具有相同id的元素。