17

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

我最近发现我可以在 javascript 中使用来自 DOM 的任何对象,并直接引用其 id:

<div id="layer">IM A LAYER</div>
<script>
   alert(layer.innerHTML);
</script>

如果这是真的,那么使用 getElementById 方法我会得到什么好处?

4

3 回答 3

17

如果元素不存在,直接访问 DOM 元素会给你一个错误。如果你使用getElementById它会返回NULL

您也不能直接访问所有元素,例如,如果它们的名称中有破折号 ( some-id),因为 JS 变量不能包含破折号。但是,您可以使用window['some-id'].

于 2013-01-23T11:05:44.437 回答
6

例如,如果在您的页面中,您在其他地方有另一个先前的脚本

<script>
var layer = false; // or any other assignment
</script>

layer将是对 的引用window.layer,然后layer.innerHTML将失败。与document.getElementById您一起避免这个棘手的错误

于 2013-01-23T11:05:45.637 回答
0

这仅适用于id' 包含变量名允许的字母。对于 id 之类的text-11,否则item-key-21将无法正常工作。

于 2013-01-23T11:05:40.610 回答