Javascript 我真的需要调用getElementById()吗?

Javascript 我真的需要调用getElementById()吗?,javascript,Javascript,可能重复: 我刚刚在浏览器中偶然发现了一个意外但有用的行为:它为html代码中具有ID的每个元素创建一个变量。因此,当我: <div id="ohlala"> ... </div> 因此,我可以通过以下方式轻松更改该元素的文本: ohlala.innerHTML="test" 在线试用: 问题是:为什么我需要自己编写文档。getElementById()位?代码的可移植性如何?我试过Opera、FireFox和Chrome,效果不错!我可以依赖这个功能吗?浏览器是否

可能重复:

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

<div id="ohlala"> ... </div>
因此,我可以通过以下方式轻松更改该元素的文本:

ohlala.innerHTML="test"
在线试用:
问题是:为什么我需要自己编写
文档。getElementById()
位?代码的可移植性如何?我试过Opera、FireFox和Chrome,效果不错!我可以依赖这个功能吗?浏览器是否总是为每个id为的元素创建变量?在这种情况下,我必须更加小心javascript代码中使用的名称,以免与HTML中的类似ID发生冲突,对吗?

使用ID创建元素时,“窗口”对象接收特定属性,这就是为什么可以直接使用变量,此行为已被弃用,通常是这样写的:
window.ohlala.innerHTML=“…”
,浏览器保留此行为以与网站上的一些旧代码兼容,但不建议在现代网站中使用它,请始终使用.getElementById()方法,此方法是W3C标准的一部分,您可以在所有现代浏览器中使用它,在一些非常旧的浏览器版本中,这很常见,但AFAIK不是标准。正如你所想象的,它是从Internet Explorer开始的。IIRC Firefox的旧版本不支持它,我对移动浏览器也不了解。另外,你在
窗口
对象上有很多预先存在的属性,在
窗口
对象上定义与这些属性匹配的ID的元素不会替换它们,您会发现您要么必须避免使用某些ID,要么只能对某些ID使用
getElementById
。这在多种形式中都会出现问题。有时我们使用document.form[].element问题的另一个方面(除了这是一个非常糟糕的做法)是你会把@lanzz说的变量混在一起。你怎么知道ohlaha是什么?你必须猜出那是哪一个特定的W3C标准?你能指出文档吗,此行为在何处标准化?您可以在此处找到所有W3C标准:getElementById是在DOM级别1中为HTML文档引入的,并移动到DOM级别2中的所有文档:@micnic您注意到该问题与
document.getElementById()无关。
,但是浏览器在dom中隐式生成变量而不必调用
document.getElementById()
?@micnic好的,我想你误解了这个问题。请随意删除您的答案。。。
ohlala.innerHTML="test"