应该发生的是添加了“命名元素”作为
document对象的明显属性。这是一个非常糟糕的主意,因为它允许元素名称与的实际属性冲突
document。
IE也通过添加命名元素作为
window对象的属性来使情况变得更糟。这是双重不利的,因为现在您必须避免在您可能想要使用
document或
window对象(或项目中的任何其他库代码)的任何成员之后命名元素。
这也意味着这些元素作为全局变量可见。幸运的是,在这种情况下,代码中的任何实际全局变量
var或
function声明都将它们隐藏起来,因此您不必担心在此处命名,但是如果您尝试对名称冲突的全局变量进行赋值而忘记声明它
var,您将在IE中遇到错误,因为它试图将值分配给元素本身。
通常,忽略
var以及依赖命名元素在
window全局变量上或全局变量上可见是不正确的做法。坚持
document.getElementById,这是得到更广泛支持和较少含糊的内容。如果您不喜欢键入,则可以使用短名称编写平凡的包装函数。无论哪种方式,使用id到元素的查找缓存都是没有意义的,因为浏览器通常会优化
getElementById调用以使用快速查找。当元素更改
id或从文档中添加/删除元素时,您得到的只是问题。
歌剧复制IE,然后WebKit的加入进来,现在都将命名元素上的以前不标准,实践
document特性,并把他们的先前IE-
只有实践
window都被
标准化的HTML5,其方法是将文件和规范每浏览器作者对我们施加了可怕的习俗,使他们永远成为网络的一部分。因此,Firefox 4也将支持此功能。
什么是“命名元素”?带有
id,和带有
name用于“标识”目的的任何东西:即表单,图像,锚点和其他一些
name属性,但没有其他与属性无关的实例,例如表单输入字段中的控件名称,
<param>或中的元数据类型
<meta>。
name应该避免使用“标识”
来代替
id。



