是否还需要document.getElementById('id')或$('#id')来按ID选择元素?

时间:2012-08-30 22:29:47

标签: javascript html dom

我今天遇到了这个gist,并在评论中提到了

var log = document.getElementById('log');

是不必要的,因为在Javascript中你可以使用log来访问DOM元素。所有浏览器都是如此吗?这项技术有名称/参考吗?

4 个答案:

答案 0 :(得分:5)

在Internet Explorer中,ID将成为全局变量,并且可以通过该名称随处访问。

我认为这种'错误'是一件坏事。

我不记得它的所有功能和方面,我尽力尝试假装从未发生过。

简而言之:仅限IE的“功能” - 最好被忽略。请阅读this article了解详情。

答案 1 :(得分:4)

令人惊讶的是,这实际上是在HTML5规范中,所以 是的,它会工作,并不是它不是一个遗留的功能,因为它被建议(至少 - 它曾经是IE唯一的技巧)。

你可以在这里阅读规范, http://www.whatwg.org/specs/web-apps/current-work/#named-access-on-the-window-object

我会同意它实际上会混淆命名空间,并且会冒昧地建议不要使用它 - 但它会在每个主要浏览器上工作!

答案 2 :(得分:1)

这是一个可疑的“功能”,不应该用于任何事情。它引入了全局状态和全局范围变量,这是在任何应用程序中要避免的要点之一,更重要的是,它们似乎只适用于Internet Explorer和某些版本的Chrome。几乎可以肯定,性能较差,因为浏览器不仅必须访问DOM,而且还必须事先查找名为log的变量。

答案 3 :(得分:0)

对于新版本的现代浏览器,它可能有效,但旧版本无法正常处理。如果您希望您的网站在旧版浏览器中运行,请使用document.getElementById。

相关问题