设置一个复选框,其中包含使用javaScript检查的特定名称和id

Set a check box with specific name as well as id as checked using javaScript

本文关键字:检查 javaScript id 定名称 包含使 一个 复选框 设置      更新时间:2023-09-26

在我的HTML文件中,我想设置一个具有特定名称和id的复选框,即=checked。我怎样才能做到这一点。。?

例如:

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

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

编辑:更具体的:

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

注意:我有其他元素,它们有相同的id,但有不同的名称,也有相同的名称,但不同的id。但没有两个元素两者都有共同点。

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

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

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

jsFiddle

拥有HTML元素的id,以数字开头是不正确的。重命名您的id并使其唯一。此外,javascript引擎会将id值1计算为true。但是,如果你的HTML文档是HTML5兼容的,那么以数字开头的id就没有问题。

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

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

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

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

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