无法在IE8中读取对象属性

时间:2012-08-10 08:51:49

标签: javascript json internet-explorer

我有以下代码,它在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);
     }
}

有人能说出什么问题吗? 感谢。

3 个答案:

答案 0 :(得分: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);
     }
}

答案 1 :(得分:0)

status是IE中的保留关键字。尝试重命名你的变种。

答案 2 :(得分:0)

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

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

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