问题
Possible Duplicate:
IE/Chrome: are DOM tree elements global variables here?
I recently discovered that I can use in javascript any object from DOM with a direct reference to its id:
<div id="layer">IM A LAYER</div>
<script>
alert(layer.innerHTML);
</script>
If this is true, what advantage I'd get using the getElementById method?
回答1:
Accessing a DOM element directly will give you a error if the element does not exist. Wheras if you use getElementById it will return NULL.
You also can't access all elements directly if they, for example, have dashes in their name (some-id), because JS variables can't contain dashes. You could however access tthem with window['some-id'].
回答2:
for example, if in your page you have elsewhere another previous script with
<script>
var layer = false; // or any other assignment
</script>
layer will be a reference to window.layer, then layer.innerHTML will fail. With document.getElementById you will avoid this tricky errors
回答3:
This will work only for id's containing letters allowed for variable names. For id's like text-11, or item-key-21 it won't work.
来源:https://stackoverflow.com/questions/14478102/why-use-document-getelementbyid-when-i-can-directly-refer-to-the-dom-id-in-javas