在我的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
同时检查name
和JavaScript
。请帮助。
修改 更具体:
if(document.getElementById(1) && document.getElementById(1).type == "checkbox" ){
document.getElementById(1).checked = true;
}
注意:我的其他元素具有相同的ID,但名称不同,名称相同,但ID不同。但没有两个人有共同点。
答案 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;
}
答案 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然后确定课程会更有效率。