2013-12-20 41 views
0

在ajax請求的成功回調中,我得到一個對象,它是一個對象數組(poList)。我想循環訪問這個列表,如果status屬性是某種東西,那就做點什麼吧。在javascript數組中獲取物品的單個屬性

在下面的例子中,是response.PoList帶有兩個項目和x有效陣列對象是0(在調試器,我可以在PoList盤旋和它的工作原理);然而,status不存在(即,如果該語句總是爲false)。我在做什麼錯在這裏

for (var x = 0; x < response.PoList.length; x++) { 
    if (response.PoList[x].Status == 'Not edited') { 
     response.PoList[x].StatusNum = 1; 
    } else { 
     response.PoList[x].StatusNum = 3 
    } 
} 

編輯

見下面的截圖,我不認爲這是一個區分大小寫的問題。那麼,有什麼突出的response.PoList(不只是response),x目前0,如果我將鼠標懸停在Status,我什麼也沒有(沒有「undefined」工具提示或任何東西)

enter image description here

+3

您在帖子中使用了兩種不同的大小寫樣式,並在poList和status中使用了代碼。 javascript區分大小寫。這是一個資本化問題嗎? –

+0

for循環看起來正確。在檢查其值之前,可能需要檢查Status屬性是否存在。 –

+0

添加了屏幕截圖,我不認爲*這是一個區分大小寫的問題,只是我輸入問題時的一個疏忽。 – Tom

回答

2

您的代碼工作如所提供的那樣 - 取決於它是否實際匹配您的數據。

Live Demo

我會根據您的代碼這個例子。如果你的迴應對象不同,那麼,是的,你做錯了什麼。我想回復Mr. Zimmerman's comment;這可能很容易成爲資本化問題。

response = { 
    PoList: [ 
     { 
      foo: 'bar', 
      Status: 'edited' 
     }, 
     { 
      foo: 'baz', 
      Status: 'Not edited' 
     }, 
     { 
      foo: 'barbar', 
      Status: 'Not edited' 
     } 
    ] 
}; 

for (var x = 0; x < response.PoList.length; x++) { 
    if (response.PoList[x].Status === 'Not edited') { 
     response.PoList[x].StatusNum = 1; 
    } else { 
     response.PoList[x].StatusNum = 3; 
    } 
} 
+0

有趣......我覺得我的行爲就是這樣,但它的工作原理不一樣。 – Tom

+0

你能粘貼你正在處理你的問題的確切響應對象嗎? (只需使用JSON.stringify()就可以得到一個可複製的版本。) – Nate

+0

http://pastebin.com/Qyk2KzeF – Tom

0

檢查是否存在等response.PoList[x].Status

for (var x = 0; x < response.PoList.length; x++) { 
    if (response.PoList[x].Status && response.PoList[x].Status == 'Not edited') { 
    response.PoList[x].StatusNum = 1; 
    } else { 
    response.PoList[x].StatusNum = 3 
    } 
} 

Fiddle

0

您在這裏丟失了一個分號response.PoList[x].StatusNum = 3。除此之外,我沒有看到提供的代碼有任何問題,所以PoList的變量Status不得在響應中設置。