无意中,我注意到我可以在JavaScript代码中使用HTML元素的id
。所以不要这样:
var myCanvas = document.getElementById('myCanvas');
myCanvas.width = '600';
myCanvas.height = '400';
我甚至没有第一行,因为变量myCanvas
显然已经存在!
myCanvas.width = '600';
myCanvas.height = '400';
这很好,但我能依靠它吗?这是我在所有现代浏览器中可以预期的正常行为吗?我不关心IE9之前的任何浏览器。
答案 0 :(得分:3)
在浏览器脚本编写的早期,IE将ID和NAME属性值作为引用相关元素的全局对象的属性。这被广泛认为是“坏事”,但被大多数其他浏览器复制以便与IE兼容(当时大多数网站几乎专门用于IE,其用户份额约为95%)。
然后是开放的标准和协同努力来支持他们。现在没有任何有意义的人使用它,尽管它仍然可能被所有正在使用的浏览器支持。
请注意,声明的同名全局变量优先于同名或ID'd元素。
答案 1 :(得分:3)
我将引用你的answer并提及这是而不是 standard behaviour。所有浏览器都支持此行为(没有quircks模式之外的Firefox),但我不建议使用它。 标准模式下的firefox<14不支持
答案 2 :(得分:2)
你可以信赖它。但是,如果运行该站点的语言是ASP.NET,则使用ClientID会更安全。如果控件的ID发生更改,您的代码将会适应。
e.g。对于在ASP.NET上运行的Javascript
var myCanvas = document.getElementById("<%=myCanvas.ClientID%>");