0

我有以下代码,它在 IE8 中不起作用(在 Firefox 中完美运行):

response = eval('({"success":true,"statuses":[{"title":"Unknown","code":"UNKNOWN","cssClass":"sys_unknown","id":1}]})');

for (var i in response.statuses) {
    status = response.statuses[i];
     if (status.id != undefined) {
        alert('ID = ' + status.id);
     }
}

有人可以告诉你出了什么问题吗?谢谢。

4

3 回答 3

1

尝试这个:

response = eval('({"success":true,"statuses":[{"title":"Unknown","code":"UNKNOWN","cssClass":"sys_unknown","id":1}]})');

var s = response.statuses;
for (var i=0,len = s.length;i<len;i++) {
    var st = s[i];
     if (typeof st.id != 'undefined') {
        alert('ID = ' + st.id);
     }
}
于 2012-08-10T09:01:35.137 回答
0

首先,尝试始终使用var关键字声明变量。如果不这样做,它们将成为window对象的属性,有效地将它们添加到全局范围。

它不起作用的原因是因为这条线:status = response.statuses[i];

您不需要重命名变量,因为您不在全局范围内,只要您使用 var 关键字声明它: var status = response.statuses[i];

于 2012-08-10T09:05:02.313 回答
0

status是 IE 中的保留关键字。尝试重命名您的 var。

于 2012-08-10T09:00:04.697 回答