繁体   English   中英

通过其ID直接访问HTML元素-这会发生什么?

[英]Accessing an HTML-element by it's id DIRECTLY - What happens here?

我偶然发现了这种行为:

我可以通过JavaScript的HTML属性“ id”来访问HTML元素。 通常我为此使用getElementById。

我什至可以对其属性进行写访问。

制作了这个演示并在Firefox,Safari和Chrome中进行了试用。 它无处不在。

 alert(test1.innerHTML); test1.innerHTML = 'Foobar'; alert(test1.innerHTML); 
 <div id="test1">Demo 123</div> 

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

而且我问自己:当我可以直接获取和设置元素时,getElementById有什么意义? 当然:我知道发明人并非出于某种意图并没有采用这种方法。

谁能给我一些解释,为什么我可以通过id属性访问元素?

而且为什么还要使用getElementById?

据我所知,此行为是Internet Explorer引入的。 一段时间后,其他供应商将其收起。 我认为它从来都不是标准化的,因此可能随时停止运行。 另外,如果您的代码中包含变量test1,它将覆盖控件定义的test1。

值得一提的是,在某些IE版本中,尝试创建与元素ID同名的全局变量会失败 David Flanagan所著的《 JavaScript:权威指南》一书还说,如果在创建元素时变量已经存在于全局范围内,则该变量将不会被具有相同id的元素覆盖。

有关此主题的更多信息: 是否存在将元素ID设置为全局变量的规范? 在这里: 具有ID的DOM树元素是否会成为全局变量?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM