`
forestkqq
  • 浏览: 207192 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JavaScript 在 Firefox下正常IE下报错的几个例子

阅读更多

 

1. json 数据中多余的逗号

 

代码 var man={ name:'zhang',   } 末尾多出一个逗号,

 

在 FireFox 下正常,

 

在 IE下会报错:缺少标识符、字符串或数字(Expected identifier, string or number )。

 

这样的错误在文件中不太好找,我用ultraedit 的正则表达式 " ,[ ^t ^p ]+} " 查找这样的错误 ,  删除多余的逗号,即可

 

 

 

2. json 键值对的键侵犯了 IE 保留字 :

 

    定义一个 json : var  test = { export:'....' }  , 键为 export

 

在 FireFox 下正常,

 

在 IE下会报错:缺少标识符、字符串或数字(Expected identifier, string or number )。

 

修改为别的键值如 exportx 则没有问题,似乎 IE 有这样的关键字?是否还保留了别的呢?不得而知。但是类似这样的问题,在定义 json 时真得小心了,不能那么随心所欲。

 

可喜的是,根据西门兄弟的提示,给 json 名加上引号就没有后顾之忧了:

 

var test = { 'export' : '....'  }

 

 

 

 

参考:

 

Javascript保留字(Javascript Reserved Words)

 

 

 

 

 

 

3. 取 json 值时,报错“对象不支持此属性 方法 (object doesn't support this property or method)” :

 

   原代码是从 jqgrid 中读取行数据,然后处理

 

// 读取 jqgrid 行,返回的值是JSON :
//  {"rn":"1",...,"WorkType":"校准" }

var rowData = jqgrid_Samples_tab.getRowData( ids[i] ); 

cWorkType = rowData["WorkType"];

     运行到  WorkType = rowData["WorkType"]; 就报错。修改成 WorkType = rowData.WorkType也一样。

 

后来修改成 var WorkType = rowData["WorkType"]; 就可以了。再后来还发现,变量名和 JSON 键名不一样时,都不会报错,如 cWorkType = rowData["WorkType"] 也能正常运行。

 

 

     在 JavaScript 中,为变量定义加上一个 var 则限定变量为局部变量,否则就默认为全局变量。为了测试变量范围在 IE 中对 JSON 的影响,以及变量名与JSON键名同名的情况,单独做了一个测试程序,又没有发现类似的问题。

 

    是什么原因造成的这个错误呢 ? 以后在处理类似的问题时也得注意一下了,尽量不使用全局变量,或变量名不与JSON键同名。

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics