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

statusIEで予約されているキーワードです。varの名前を変更してみてください。

于 2012-08-10T09:00:04.697 に答える
0

まず、常にvarキーワードを使用して変数を宣言するようにしてください。そうしないと、それらはwindowオブジェクトのプロパティになり、グローバルスコープに効果的に追加されます。

それが機能しない理由は、次の行のためです。status = response.statuses[i];

varキーワードで宣言している限り、グローバルスコープにいないため、変数の名前を変更する必要はありません。 var status = response.statuses[i];

于 2012-08-10T09:05:02.313 に答える