可能重复:
IE/Chrome:DOM树元素是全局变量吗?
我在浏览器中偶然发现了一个意外但有用的行为:它为我的html代码中具有ID的每个元素创建一个变量.所以当我有:
<div id="ohlala"> ... </div>
Run Code Online (Sandbox Code Playgroud)
浏览器似乎在幕后运行此代码:
var ohlala = document.getElementById("ohlala");
Run Code Online (Sandbox Code Playgroud)
所以我可以通过以下方式轻松更改该元素的文本:
ohlala.innerHTML="test"
Run Code Online (Sandbox Code Playgroud)
在网上尝试:http://jsfiddle.net/Facby/
问题是:为什么我需要自己写这个document.getElementById()位?该代码的可移植性如何?我在Opera,FireFox和Chrome上试过,它有效!我可以依靠这个功能吗?浏览器是否总是为每个具有id的元素创建变量?在这种情况下,我必须更加小心我的javascript代码中使用的名称不要与HTML中的类似ID冲突,对吧?
创建带有 ID 的元素时,“window”对象接收特定属性,这就是您可以直接使用变量的原因,此行为已被弃用,通常是这样编写的:window.ohlala.innerHTML = "...", 浏览器保留此行为以与某些旧代码兼容网站,但不建议在现代网站中使用它,始终使用 .getElementById() 方法,该方法是 W3C 标准的一部分,您可以在所有现代浏览器中使用它,在一些非常旧的浏览器版本和 < IE7不起作用。在此处了解有关 DOM(文档对象模型)的更多信息:https : //developer.mozilla.org/en-US/docs/DOM