cod*_*rex 54 javascript getelementbyid
当你应该使用document.all
与document.getElementById
?
Mar*_*pel 38
document.all
是很老,你不必使用它了.
引用尼古拉斯扎卡斯的话:
例如,当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];
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*gan 13
实际上,document.all
只是最低限度可比document.getElementById
.你不会用一个代替另一个,他们不会返回相同的东西.
如果你试图通过浏览器功能进行过滤,你可以使用它们,就像Marcel Korpel的回答一样:
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];
}
Run Code Online (Sandbox Code Playgroud)
但是,在功能上,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);
}
Run Code Online (Sandbox Code Playgroud)
你会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);
}
Run Code Online (Sandbox Code Playgroud)
document.all()是一种访问DOM元素的非标准方式.它已被少数浏览器弃用.它使您可以访问文档中的所有子元素.
document.getElementById()是标准的,完全支持.每个元素在文档上都有唯一的ID.
如果你有:
<div id="testing"></div>
Run Code Online (Sandbox Code Playgroud)
运用
document.getElementById("testing");
Run Code Online (Sandbox Code Playgroud)
可以访问该特定div.
document.querySelectorAll
(以及document.querySelector()
返回第一个找到的元素的变体)功能强大得多.你可以轻松地:
document.querySelectorAll("*")
,有效地模拟非标准document.all
属性;document.querySelector("#your-id")
,有效模拟document.getElementById()
功能;document.querySelectorAll(".your-class")
,有效模拟document.getElementsByClassName()
功能;document.querySelectorAll("form")
的代替document.forms
,和document.querySelectorAll("a")
代替document.links
;统一查询API是最佳选择.即使document.all
符合标准,也只是不方便.