13

可能重复:
IE/Chrome:这里是 DOM 树元素全局变量吗?

我刚刚在浏览器中偶然发现了一个意想不到但有用的行为:它为我的 html 代码中具有 ID 的每个元素创建了一个变量。所以当我有:

<div id="ohlala"> ... </div>

浏览器似乎在幕后运行此代码:

var ohlala = document.getElementById("ohlala");

所以我可以通过以下方式轻松更改该元素的文本:

ohlala.innerHTML="test"

在线尝试:http: //jsfiddle.net/Facby/ 问题是:为什么我需要自己编写document.getElementById()代码?该代码的可移植性如何?我在 Opera、FireFox 和 Chrome 中尝试过,它可以工作!我可以依赖这个功能吗?浏览器是否总是为每个具有 id 的元素创建变量?在这种情况下,我必须更加小心我的 javascript 代码中使用的名称,以免与 HTML 中的类似 id 冲突,对吧?

4

1 回答 1

5

当创建带有 ID 的元素时,“window”对象接收特定属性,这就是为什么您可以直接使用变量的原因,这种行为已被弃用,通常这样写:window.ohlala.innerHTML = "...",浏览器保留了这种行为以与一些旧代码兼容网站,但不建议在现代网站中使用它,始终使用 .getElementById() 方法,该方法是 W3C 标准的一部分,您可以在所有现代浏览器中使用它,在一些非常旧的浏览器版本和 < IE7不起作用。在此处了解有关 DOM(文档对象模型)的更多信息:https ://developer.mozilla.org/en-US/docs/DOM

于 2012-09-20T10:16:57.340 回答