首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >document.all与document.getElementById

document.all与document.getElementById
EN

Stack Overflow用户
提问于 2010-03-09 18:53:39
回答 8查看 116.4K关注 0票数 56

什么时候应该使用document.all而不是document.getElementById

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-09 18:55:14

document.all是微软对W3C标准的专有扩展。

getElementById()是标准的-使用它。

但是,考虑一下使用像jQuery这样的js库是否会派上用场。例如,$("#id")getElementById()的jQuery等效项。此外,您还可以使用more than just CSS3选择器。

票数 65
EN

Stack Overflow用户

发布于 2010-03-09 18:55:29

你很老了, don't have to use it anymore.

引用Nicholas Zakas

例如,在DOM还很年轻的时候,并不是所有的浏览器都支持getElementById(),所以有很多代码看起来像这样:

代码语言:javascript
运行
复制
if(document.getElementById){  //DOM
    element = document.getElementById(id);
} else if (document.all) {  //IE
    element = document.all[id];
} else if (document.layers){  //Netscape < 6
    element = document.layers[id];
}
票数 39
EN

Stack Overflow用户

发布于 2014-02-18 07:36:55

实际上,与document.getElementById.相比,document.all只是最小的你不会用一个来代替另一个,它们不会返回相同的东西。

如果您试图通过浏览器功能进行过滤,则可以在Marcel Korpel's answer中使用它们,如下所示:

代码语言:javascript
运行
复制
if(document.getElementById){  //DOM
    element = document.getElementById(id);
} else if (document.all) {    //IE
    element = document.all[id];
} else if (document.layers){  //Netscape < 6
    element = document.layers[id];
}

但是,在功能上,document.getElementsByTagName('*')更等同于document.all.

例如,如果您实际上要使用document.all来检查页面上的所有元素,如下所示:

代码语言:javascript
运行
复制
var j = document.all.length;
for(var i = 0; i < j; i++){
   alert("Page element["+i+"] has tagName:"+document.all(i).tagName);
}

您将改用document.getElementsByTagName('*')

代码语言:javascript
运行
复制
var k = document.getElementsByTagName("*");
var j = k.length; 
for (var i = 0; i < j; i++){
    alert("Page element["+i+"] has tagName:"+k[i].tagName); 
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2408424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档