可能重复:
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方法有什么好处?
答案 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-11
或item-key-21
等ID,它将无效。