如何通过指定元素来获取元素集合id?我想获得idhtml中具有相同标签的所有标签的名称.
我想只使用getElementById()一个元素数组.我怎样才能做到这一点?
Ode*_*ded 77
在HTML规范所要求的ID属性是在一个页面独特之处:
此属性为元素指定名称.该名称在文档中必须是唯一的.
如果您有多个具有相同ID的元素,则HTML无效.
所以,getElementById()应该只返回一个元素.你不能让它返回多个元素.
有几个相关的函数将返回一个元素数组 - getElementsByName或者getElementsByClassName可能更适合您的要求,虽然getElementsByClassName它是HTML 5的新功能,它仍处于草稿状态.
Bra*_*ord 30
我知道这是一个老问题,并且具有多个ID的HTML页面无效.但是,我在需要抓取并重新格式化包含重复ID(无效HTML)的其他API的HTML文档时遇到了这个问题.
所以对于其他任何人来说,这里是我用来解决使用querySelectorAll问题的代码:
var elms = document.querySelectorAll("[id='duplicateID']");
for(var i = 0; i < elms.length; i++)
elms[i].style.display='none'; // <-- whatever you need to do here.
Run Code Online (Sandbox Code Playgroud)
Pau*_*her 26
为什么你想要这样做是超出我的,因为id应该在文档中是唯一的.但是,浏览器往往对此非常松懈,所以如果你真的必须使用getElementById来实现这个目的,你可以这样做:
function whywouldyoudothis() {
var n = document.getElementById("non-unique-id");
var a = [];
var i;
while(n) {
a.push(n);
n.id = "a-different-id";
n = document.getElementById("non-unique-id");
}
for(i = 0;i < a.length; ++i) {
a[i].id = "non-unique-id";
}
return a;
}
Run Code Online (Sandbox Code Playgroud)
但是,这很愚蠢,我不相信这会永远适用于所有浏览器.尽管HTML DOM规范将id定义为readwrite,但如果遇到具有相同id的多个元素,则验证浏览器会抱怨.
编辑:给定一个有效的文件,可以达到同样的效果:
function getElementsById(id) {
return [document.getElementById(id)];
}
Run Code Online (Sandbox Code Playgroud)
具有相同的多个元素是非法的id.将id被用作一个单独的标识符.对于元素组,请使用class,而getElementsByClassName不是.
id 应该是唯一的,使用属性“name”和“getelementsbyname”代替,您将拥有数组。
| 归档时间: |
|
| 查看次数: |
191246 次 |
| 最近记录: |