为什么在我可以直接引用JavaScript中的DOM id时使用document.getElementById?

时间:2013-01-23 11:02:19

标签: javascript dom getelementbyid

  

可能重复:
  IE/Chrome: are DOM tree elements global variables here?

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

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

如果这是真的,我使用getElementById方法有什么好处?

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:2)

例如,如果在您的页面中,您在其他地方有另一个带有

的前一个脚本
<script>
var layer = false; // or any other assignment
</script>

layer将引用window.layer,然后layer.innerHTML将失败。使用document.getElementById,您将避免这种棘手的错误

答案 2 :(得分:0)

这仅适用于id包含变量名允许的字母。对于text-11item-key-21等ID,它将无效。