1

这是一个不那么广为人知的事实,大多数* Web 浏览器为页面上的每个元素创建一个全局变量,其中包含一个id属性:

HTML:

<header id="page-header"></header>


JS:

window['page-header'].style.fontFamily = "Comic Sans MS";


我的问题:

  • 这是选择元素的可靠方法吗?
  • 有什么理由document.getElementByID改用吗?我猜想使用全局变量访问 ID 元素会比document.getElementByID.


是一个演示。
*我已经在最新版本的 Chrome、Firefox 和 IE 中对此进行了测试。

4

2 回答 2

2

我在jsperf上对其进行了测试,使用 Chromium v​​25 getElementByID 更快

于 2013-04-17T23:36:03.133 回答
1

需要考虑的一些事项:

如果window对象已经有一个具有该名称的属性,它将不会被覆盖。

img使用该name属性的元素也将成为窗口对象的属性。由于 name 属性不需要是唯一的,因此可能会发生这种情况:

<img name="test"/>
<img name="test"/>
<img id="test"/>

在一些较旧的浏览器window.test中会返回一个包含三个元素的 NodeList。

因此使用该getElementById方法更安全。

于 2013-04-17T23:45:25.123 回答