当变量名与元素id的名称相同时,IE 7会引发错误

时间:2013-07-05 17:25:04

标签: jquery

任何人都可以澄清这个

new_pswd = $('#new_pswd').val() // does not work in ie 7 but works in all other

当我将其更改为

newer_pswd = $('#new_pswd').val() // it works even in ie

我想可能是IE 7不支持变量名是否与元素id's名称相同?甚至其他版本我都不知道,因为我现在已经在我的电脑上安装了IE 7。

1 个答案:

答案 0 :(得分:3)

如果变量相等,那么元素的id会保持该元素,就像听起来一样疯狂,实际上是HTML Standard的一部分:

  

6.2.4 Window对象

上的命名访问权限      

Window接口支持命名属性。支持的属性   任何时刻的名称都包含以下内容,按树顺序忽略   稍后重复:

     
      
  • ...
  •   
  • 中的任何HTML元素id内容属性的值   具有非空id内容属性的活动文档。
  •   

刚刚在这里测试过:

  • 在IE7和IE8中,您无法为作为元素ID的变量赋值。
  • 在IE 9和Chrome中你可以。
  • Firefox:有一些副作用,但是:版本13仅在怪癖模式下;版本14和更新的标准模式。

DOM Element References as Global VariablesDOM: element IDs are global variables中有一些有用的讨论。

底线:不要使用属于元素'的变量名。最终,它具有不可预测的行为。如果您打算使用它们,请至少阅读这两篇文章。