与其他人可能说的相反,对多个元素使用相同的 Id 不会阻止页面加载,但是当尝试通过 Id 选择元素时,返回的唯一元素是指定了 id 的第一个元素。更不用说使用相同的 id 甚至不是有效的 HTML。
既然如此,永远不要使用重复的 id 属性。如果您认为需要,那么您正在寻找课程。例如:
<div id="div1" class="mydiv">Content here</div>
<div id="div2" class="mydiv">Content here</div>
<div id="div3" class="mydiv">Content here</div>
请注意每个给定元素如何具有不同的 id,但具有相同的类。与您上面所做的相反,这是合法的 HTML 语法。您用于“.mydiv”(点表示类)的任何 CSS 样式都将适用于具有相同类的每个单独元素。
在 Snipplr 的帮助下,您可以使用它通过指定某个类名来获取每个元素:
function getAllByClass(classname, node) {
if (!document.getElementsByClassName) {
if (!node) {
node = document.body;
}
var a = [],
re = new RegExp('\\b' + classname + '\\b'),
els = node.getElementsByTagName("*");
for (var i = 0, j = els.length; i < j; i++) {
if (re.test(els[i].className)) {
a.push(els[i]);
}
}
} else {
return document.getElementsByClassName(classname);
}
return a;
}
上面的脚本将返回一个数组,因此请确保为此正确调整。