2012-08-10 49 views
0
閱讀對象屬性

我有以下的代碼,它不工作,IE8(在Firefox中完美的作品):無法在IE8

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); 
    } 
} 

誰能告訴我,什麼是錯的? 謝謝。

+1

你也不應該用'for/in'來迭代數組。你應該使用一般形式:'for(var i = 0; i jfriend00 2012-08-10 09:01:49

回答

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); 
    } 
} 
+0

這解決了這個問題。非常感謝你! – 2012-08-10 09:16:09

0

status是IE中的保留關鍵字。嘗試重命名你的var。

0

首先,嘗試總是與var關鍵字聲明變量。如果不這樣做,它們將成爲window對象的屬性,並將其有效地添加到全局範圍。

爲什麼它不工作的原因是因爲該行的:status = response.statuses[i];

你並不需要,因爲你在全球範圍內不是,重命名你的變量,只要你用var聲明它關鍵字: var status = response.statuses[i];