我偶然发现了这种行为:
我只能通过它的HTML属性" id"来访问JavaScript中的HTML元素。通常我使用了getElementById。
我甚至可以对它的属性进行写访问。
制作此演示并在Firefox,Safari和Chrome中试用。 它无处不在。
alert(test1.innerHTML);
test1.innerHTML = 'Foobar';
alert(test1.innerHTML);

<div id="test1">Demo 123</div>
&#13;
所以,说实话:我感到惊讶和困惑,因为我还不知道这是可能的。
此外我问自己:当我可以直接获取和设置元素时,getElementById有什么意义呢? 当然:我知道发明者没有一点意图就没有采用这种方法。
任何人都可以给我一些解释为什么我可以通过id-attribute访问元素吗?
为什么一个人使用getElementById呢?
答案 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?