由它直接访问HTML元素 - 这里发生了什么?

时间:2016-04-17 10:49:30

标签: javascript html

我偶然发现了这种行为:

我只能通过它的HTML属性" id"来访问JavaScript中的HTML元素。通常我使用了getElementById。

我甚至可以对它的属性进行写访问。

制作此演示并在Firefox,Safari和Chrome中试用。 它无处不在。



alert(test1.innerHTML);

test1.innerHTML = 'Foobar';

alert(test1.innerHTML);

<div id="test1">Demo 123</div>
&#13;
&#13;
&#13;

所以,说实话:我感到惊讶和困惑,因为我还不知道这是可能的。

此外我问自己:当我可以直接获取和设置元素时,getElementById有什么意义呢? 当然:我知道发明者没有一点意图就没有采用这种方法。

任何人都可以给我一些解释为什么我可以通过id-attribute访问元素吗?

为什么一个人使用getElementById呢?

1 个答案:

答案 0 :(得分:1)

据我记忆,此行为是由Internet Explorer引入的。过了一会儿,其他供应商就把它拿了起来。我不认为它曾经标准化,因此可能随时停止运作。此外,如果代码中有变量test1,它将覆盖控件定义的test1。

值得一提的是,在某些IE版本中,尝试创建一个与元素fails的id同名的全局变量。这本书&#34; JavaScript:The Definitive Guide&#34;作者David Flanagan还说,如果在创建元素时变量已经存在于全局范围内,那么该变量将不会被具有相同id的元素覆盖。

此处有关此主题的更多信息:Is there a spec that the id of elements should be made global variable?和此处:Do DOM tree elements with ids become global variables?