我们可以得到所有的dom
document.getElementsByTagName("*")
Run Code Online (Sandbox Code Playgroud)
为什么我们不能使用
document.getElementsByClassName("*")
Run Code Online (Sandbox Code Playgroud)
获取具有class属性集的所有标记?
同样使用
document.getElementById("*")
Run Code Online (Sandbox Code Playgroud)
获取id属性集的标签?
虽然这些功能不是很必要,也可能没有要求,但我希望有人告诉我如何实现同样的功能.谢谢.
答案是因为getElementsByClassName()并且getElementById()不要采用通配符.它们没有规范或编写,所以你不能那样使用它们.
进一步getElementById()只返回单个DOM元素,而不是元素数组,因此它永远不会以这种方式工作.
如果你想获得所有带有类名的元素或所有带有id的元素,你可以这样做:
function getAllElementsWithAttribute(attr) {
var results = [];
var all = document.getElementsByTagName("*");
for (var i = 0, len = all.length; i < len; i++) {
if (all[i][attr]) {
results.push(all[i]);
}
}
return(results);
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令获取具有类名的所有元素:
var items = getAllElementsWithAttribute("className");
Run Code Online (Sandbox Code Playgroud)
或者,使用以下内容获取带有ID的所有元素:
var items = getAllElementsWithAttribute("id");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2545 次 |
| 最近记录: |