This question already has answers here:
Do DOM tree elements with ids become global variables?

(5个答案)


已关闭6年。




偶然地,我注意到我可以在JavaScript代码中使用HTML元素的id。所以代替这个:
var myCanvas = document.getElementById('myCanvas');
myCanvas.width = '600';
myCanvas.height = '400';

我什至根本就没有第一行,因为变量myCanvas显然已经存在!
myCanvas.width = '600';
myCanvas.height = '400';

很好,但是我可以依靠它吗?我在所有现代浏览器中都可以期待这种正常的行为吗?我不在乎IE9之前的任何浏览器。

最佳答案

在浏览器脚本编写的早期,IE将ID和NAME属性值设置为引用相关元素的全局对象的属性。人们普遍认为那是一件“坏事”,但是为了与IE兼容,大多数其他浏览器都复制了它(当时,大多数站点几乎都是为IE专门编写的,IE拥有大约95%的用户份额)。

随后出现了开放标准,并齐心协力支持这些标准。现在,尽管有可能所有使用的浏览器仍支持它,但没有任何人使用它。

请注意,具有相同名称的已声明全局变量优先于具有相同名称或ID的元素。

关于javascript - 我可以将HTML元素的ID用作JavaScript中的变量吗? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19776533/

10-12 03:12
查看更多