元素作为窗口上的属性存在
这个问题在这里已经有了答案:
我不确定历史观点,但HTML 5规定,如果元素具有id
属性,则这些元素可作为window
对象上的属性直接公开:
Window接口支持命名属性。 受支持的属性名称随时包含以下内容(按树形顺序),忽略以后的重复项:
[...]
这个定义的问题是它只保证如果有一个<div id="foo">Foo<div>
那么window.foo
将被定义。 它不能保证它的价值究竟是什么(阅读规范中有关如何确定的规则;例如,它可能会返回一个集合)。
所以原来的答案是“为什么要使用getElementById
?” 很简单:因为您可以依靠它来返回您期望的内容,而无需考虑整个文档。
通常在窗口对象内部放置一些东西将使其成为全局的。 例如:
var A = function() {
window.test = "bla";
console.log(test);
}
var B = function() {
console.log(test);
}
A();
B();
但这不是一个好的做法。 您不应该依赖任何全局对象,因为您可能希望将代码移动到没有窗口的浏览器。 或者以nodejs为例。
我发现window.foo有点不对,因为你可能有创建一个叫做foo的全局变量的代码。 因此,使用getElementById可以确保您始终获取DOM元素。
Window.foo在你的场景中工作正常,但是如果Id是这样的“foo-test”而不是“foo”,你会发现它不起作用。 这是因为JavaScript变量不允许破折号在它....而它会正常工作的情况下document.getElementById
链接地址: http://www.djcxy.com/p/74113.html