document.all是什么意思?

6
我正在重构其他人编写的一些旧代码。我遇到了以下片段:

可能是重复问题:
document.all vs. document.getElementById

我正在重构其他人编写的一些旧代码,并遇到了以下片段:

if (document.all || document.getElementById) {
   ...
}

什么时候 if 语句中的代码会被执行?
谢谢!

1
阅读此问题和答案:https://dev59.com/4HE95IYBdhLWcg3wN7Kv - Mario S
如果在浏览器中支持使用 document.alldocument.getElementById 而不带任何参数,则会返回“true”。因此,如果支持 document.all,则将执行您的“if”:"IE 4 -> 10",某些版本的 Opera,以及其他一些浏览器;或者如果支持 document.getElementById,则将执行您的“if”:"IE 5 及以上""Netscape 6 及以上",以及所有现代版本的 "Firefox"、"Chrome"、"Safari" 等。该“if”将不会**对 "IE < 4""Netscape < 6" 和大多数其他旧版浏览器执行。 - Kevin Fegan
实际上,这是错误的。现在为了向后兼容性,document.all 返回 false,尽管它仍然是一个对象。例如,运行 console.log(!!document.all, document.all.length) 打印出 false 1059 - Antimony
1个回答

8

document.all() 是一种非标准的访问 DOM 元素的方式。在某些浏览器中已经被弃用。它可以让你访问文档中的所有子元素。

document.getElementById() 是一种标准且完全支持的方式。每个元素在文档中都有一个唯一的 id。


2
将链接到其他答案的操作放在评论中完成,除非您正在回答与参考文献非常不同的问题。 - Michael Berkowski
谢谢你的回答。但是if语句中的代码什么时候会被执行?在我的情况下,document.alldocument.getElementById都没有像div1这样的参数。 - Evgenij Reznik
如果我理解正确,它将在用户的浏览器中启用JavaScript时执行。此外,根据我在这里阅读的[http://javascript.about.com/od/hintsandtips/a/worst_4.htm],似乎这个第一个if语句是为IE4而设计的。因此,您可以将该if从代码中删除,并使用其他内容来检查用户是否已在其浏览器中启用了JS(例如<noscript>标记)。在这里查看更多信息[https://dev59.com/eHVD5IYBdhLWcg3wAWkO]。希望这有所帮助。 - Nikola
1
@Nikola:那么,else分支什么时候被执行呢? - SamB
@SamB 在旧版的Netscape中。 - JustinCB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接