直接引用HTML元素

Sam*_*les 24 html javascript

可能重复:
IE/Chrome:DOM树元素是全局变量吗?
为什么window [id] === document.getElementById(id)

我刚刚在html/javascript中遇到过一些让我感到惊讶的事情.当获得对html元素的引用时,使用javascript,我以前总是使用jQuery或document.getElementById.您还可以使用它的id直接访问元素.有人可以解释这个细微差别吗?我用Google搜索但找不到任何关于此功能的引用,每个网站都会讨论getElementById.

以下页面代码段说明了这一点.

<html>
<head>
</head> 
<body>
    <input type="button" value="getElement" onclick="document.getElementById('blah').innerText = 'getElementById'" />
    <input type="button" value="direct" onclick="blah.innerText = 'direct';" />
    <div id="blah"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

提前谢谢了.

zzz*_*Bov 14

能够根据它们选择页面上的元素[id]是早期JavaScript的一个"特性"(DOM lvl 0或1个methinks,似乎无法找到源代码).

不幸的是,这是一种气质特征.如果您有以下情况会发生什么:

<div id="window"></div>
Run Code Online (Sandbox Code Playgroud)

要么

<div id="document"></div>
Run Code Online (Sandbox Code Playgroud)

更好的是,这里发生了什么?

<div id="foo"></div>
<div id="bar"></div>
<script>var foo = document.getElementById('bar');</script>
Run Code Online (Sandbox Code Playgroud)

所以基于它调用元素的细微差别[id]就是这样:

不要使用它.

它不一致,也不保证会得到未来的支持.

就个人而言,我希望看到这个"功能"走的路document.all.它只会导致比它解决的问题更多的问题document.getElementById,虽然肯定是冗长的,但却是有意义的,可以理解的.