什么时候应该使用document.all
而不是document.getElementById
发布于 2010-03-09 18:55:14
document.all
是微软对W3C标准的专有扩展。
getElementById()
是标准的-使用它。
但是,考虑一下使用像jQuery这样的js库是否会派上用场。例如,$("#id")
是getElementById()
的jQuery等效项。此外,您还可以使用more than just CSS3选择器。
发布于 2010-03-09 18:55:29
你很老了, don't have to use it anymore.
引用Nicholas Zakas
例如,在DOM还很年轻的时候,并不是所有的浏览器都支持getElementById(),所以有很多代码看起来像这样:
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];
}
发布于 2014-02-18 07:36:55
实际上,与document.getElementById
.相比,document.all
只是最小的你不会用一个来代替另一个,它们不会返回相同的东西。
如果您试图通过浏览器功能进行过滤,则可以在Marcel Korpel's answer中使用它们,如下所示:
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
来检查页面上的所有元素,如下所示:
var j = document.all.length;
for(var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+document.all(i).tagName);
}
您将改用document.getElementsByTagName('*')
:
var k = document.getElementsByTagName("*");
var j = k.length;
for (var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+k[i].tagName);
}
https://stackoverflow.com/questions/2408424
复制相似问题