Javascript:为什么在js中仍然存在带getElementById(id)的元素?

Han*_*ieß 3 html javascript dom

最近我注意到,带有id的html元素的引用可以通过javascript简单地使用名为id(jsbin)的变量来访问.

为什么会这样?为什么我们甚至不得不使用getElementById(id)而不是简单地写作id

T.J*_*der 5

为什么会这样?

因为早期的浏览器就是这样做的,现在已经变得标准化了.

为什么我们甚至不得不使用getElementById(id)而不是简单地写id?

从技术上讲,你没有.但请注意,全局命名空间真的非常拥挤.那里扔了很多东西.不仅是带有ID的元素,还有某些元素,如果它们有names,浏览器上下文按名称等等,这意味着可能存在冲突.例如,如果您有一个元素id="document",则不会创建自动全局.其他冲突的全局变量可能因浏览器而异.此外,id非有效JavaScript标识符(如id="foo-bar")的id值仍然是完全有效的值,但it(window["foo-bar"])的自动全局值很难使用.

使用getElementById专门查找具有该ID 1元素(不是等).所以它更加包容和可靠.name


1 忽略IE的过时版本中的错误,这些错误无法正确约束它.