Javascript 无法读取IE8中的对象属性

Javascript 无法读取IE8中的对象属性,javascript,json,internet-explorer,Javascript,Json,Internet Explorer,我有以下代码,但它在IE8中不起作用(在Firefox中工作得非常完美): 有人能告诉我出了什么事吗? 谢谢。状态是IE中的保留关键字。请尝试重命名您的变量。尝试以下操作: response = eval('({"success":true,"statuses":[{"title":"Unknown","code":"UNKNOWN","cssClass":"sys_unknown","id":1}]})'); var s = response.statuses; for (var i=0,l

我有以下代码,但它在IE8中不起作用(在Firefox中工作得非常完美):

有人能告诉我出了什么事吗?
谢谢。

状态是IE中的保留关键字。请尝试重命名您的变量。

尝试以下操作:

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);
     }
}
response=eval(“({“success”:true,“status”:[{“title”:“Unknown”,“code”:“Unknown”,“cssClass”:“sys_Unknown”,“id”:1}]}”);
var s=响应状态;

对于(var i=0,len=s.length;i首先,尝试始终使用
var
关键字声明变量。如果不这样做,它们将成为
窗口
对象的属性,有效地将它们添加到全局范围

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

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

您也不应该使用
for/in
迭代数组。您应该使用一般形式:
for(var i=0;i
'。
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);
     }
}