我有以下代码,它在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);
}
}
有人能说出什么问题吗? 感谢。
答案 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];