当我可以直接引用 JavaScript 中的 DOM id 时,为什么要使用 document.getElementBy

Why use document.getElementById when I can directly refer to the DOM id in JavaScript?

本文关键字:为什么 getElementBy document id 我可以 引用 JavaScript DOM 中的      更新时间:2023-09-26

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

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

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

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

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

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

例如

,如果您的页面中有另一个以前的脚本

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

layer将是window.layer的引用,那么layer.innerHTML将失败。有了document.getElementById您将避免这个棘手的错误

仅适用于包含变量名允许的字母的id。对于像 text-11 这样的 id item-key-21它不起作用。