Nil*_*ils 7 html javascript dom
如果我写这样的HTML:
<div id="foo">Foo<div>
Run Code Online (Sandbox Code Playgroud)
window.foo
返回一个dom元素并window.document.getElementById("foo") === window.foo
返回true
.
这是为什么?为什么每个人都使用getElementById
?
并在旁注:为什么window.foo
在IE7/8中禁止超越?如果我设置会发生什么window.foo = "bar"
?
我不确定历史的观点,但 HTML 5指定元素是候选者,window
如果它们具有属性,则可以直接作为对象的id
属性公开:
Window 接口支持命名属性。任何时候支持的属性名称都包含以下内容,按树顺序排列,忽略以后的重复项:
[...]
- 活动文档中任何具有非空 id 内容属性的 HTML 元素的 id 内容属性值。
这个定义的问题在于它只保证如果有<div id="foo">Foo<div>
thenwindow.foo
将被定义。它不保证它的值到底是什么(阅读关于如何确定它的规则的规范;例如,它可能返回一个集合)。
所以结果是“为什么使用getElementById
曾经?”的答案。很简单:因为您可以依靠它来返回您期望的内容,而无需考虑整个文档。
归档时间: |
|
查看次数: |
443 次 |
最近记录: |