作为 Window 对象属性的文档元素
如果在 HTML 文档中用 id
属性来为元素命名,并且如果 Window 对象没有同名属性的话,那么 Window 对象会赋予一个属性,它的名字是 id
属性的值,而对应的属性值是该文档元素的 HTMLElement 对象。这样,我们就可以使用 id
属性值作为一个全局变量。
但是如果 Window 对象已具备同名属性,就不可以这么做,同样如果在代码中声明了同名的全局变量,那么显式声明的变量会隐藏隐式的元素变量。
元素 id
作为全局变量的隐式应用是 Web 浏览器演化过程中遗留的怪癖,实际开发过程中,我们还是以 document.getElementById()
方法来获取对应的 HTMLElement
对象,不建议通过上面这种方式。
此外,如果 HTML 元素包含 name
属性的话,也会有上述表现,而且,id
元素在文档中是唯一的,name
则不然,如果多个元素拥有相同的 name
属性,具有该名称的隐式全局变量会引用一个类数组对象,这个类数组对象的元素是所有命名的元素。
有 name
或 id
属性的 <iframe>
元素是个例外,为它们隐式创建的变量不会引用表示元素自身的 Element 对象,而是引用表示 <iframe>
元素创建的嵌套浏览器窗体的 Window 对象。
No Comments