[英]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.