我可以在 JavaScript 中使用 HTML 元素的 id 作为变量吗?

Can I use the id of an HTML element as a variable in JavaScript?

本文关键字:id 变量 元素 JavaScript HTML 我可以      更新时间:2023-09-26

偶然地,我注意到我可以在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 元素。

我将向您推荐这个答案,并指出这不是标准行为。所有浏览器都支持这种行为(在quircks模式之外没有Firefox),但我不建议使用它。在标准模式下,Firefox<14 不支持此功能

你可以依靠它。但是,如果运行站点的语言是 ASP.NET,则使用 ClientID 会更安全。如果控件的 ID 发生更改,代码将进行调整。

例如,对于运行在 ASP.NET 上的Javascript

var myCanvas = document.getElementById("<%=myCanvas.ClientID%>");