设置一个具有特定名称的复选框以及使用javaScript检查的id

时间:2013-11-22 15:14:48

标签: javascript html

在我的HTML文件中,我想设置一个具有特定名称的复选框以及ID为= checked的复选框。我怎么能实现这个......?

例如:

<input type="checkbox" name="myName_1" id="1" value="my Value 1"> my Value 1 

我知道document.getElementById('id').checked = true;,但这只会检查id。我需要使用id同时检查nameJavaScript。请帮助。

修改 更具体:

 if(document.getElementById(1) && document.getElementById(1).type == "checkbox" ){
     document.getElementById(1).checked = true;
 }

注意:我的其他元素具有相同的ID,但名称不同,名称相同,但ID不同。但没有两个人有共同点。

4 个答案:

答案 0 :(得分:3)

好吧,正如我所说,ID在DOM中始终是唯一的。因此,具有相同ID的元素无效

您可以使用getElementsByName选择name属性,因为此选项支持多个元素。它只会创建一个可以通过索引值访问的数组。所以你可以循环遍历所有元素并逐一检查它们:

var elem = document.getElementsByName('myName_1');

for(var i = 0; i < elem.length; i++)
{
   elem[i].checked = true;
}

jsFiddle

答案 1 :(得分:1)

拥有HTML元素的id,以数字开头是不正确的。重命名您的ID并使其独一无二。 id值为1的值也通过javascript引擎评估为true。 但是,如果您的HTML文档符合HTML5,则以数字开头的id不是问题。

答案 2 :(得分:1)

你可以做这样的事情,不理想,但会解决问题。

var names = document.getElementsByName(nameToFind);
names.forEach(funciton(item) {
  if (item.id == idToFind)
    item.checked = true;
});

答案 3 :(得分:1)

正如几条评论所提到的,拥有多个具有相同ID的元素是无效的。如果有多个相同的id,则行为不可靠。 如果您有相似的元素分组,那么与许多开发人员的共同约定是为他们提供一个共同的类。这可能/将取代您对名称的使用。然后,您可以搜索特定类中具有特定ID的元素。 (根据您的使用情况,这可能是多余的。)

按类搜索是使用document.getElementsByClassName("myClass")完成的,它返回一个元素数组,类似于getElementsByName。一旦有了这个数组,你就可以循环确定你的id是否在该类组中[见下面的注释]并根据需要应用效果。 (例如elementArray[i].checked = true

注意 - 在我看来,搜索id然后确定课程会更有效率。