2013-01-15 191 views
0

下面是一些輸出,我從螢火蟲Javascript對象數組訪問屬性undefined?

<div id='div_undefined'>[{"Region":"AD","Date":"","ArticleID":"abc-345"}, {"Region":"CD","Date":"","ArticleID":"abc-345"}]</div> 

讓你可以看到在那裏JS對象數組,並注意div_undefined。如果你看下面的函數,我知道我的對象被定義了,因爲它正在打印出來。爲什麼會項目[0]返回不確定的,當我嘗試訪問條款ArticleID

這裏是從我的函數的代碼

function myFunc(Items){ 
    var item = Items[0]; 
    Write("<div id='div_" + item.ArticleID + "'>" + Items + "</div>"); 
} 
+0

你爲什麼要這樣調試,而不僅僅是'console.log(item)'? –

回答

6

如果串聯Items產生這樣的輸出,那麼它是一個(含JSON)和你必須首先解析到一個JS的數據結構(在這種情況下的陣列):

function myFunc(Items){ 
    Items = JSON.parse(Items); 
    var item = Items[0]; 
    Write("<div id='div_" + item.ArticleID + "'>" + Items + "</div>"); 
    // Will output 
    // <div id='div_abc-345'>[object Object], [object Object]</div> 
} 

理想的情況下,你會做此將值傳遞給之前功能。我不知道你在輸出什麼,所以我只能提供建議。


否則,Items[0]參照字符串的第一個字母(字符串以及)和字符串不具有ArticleID屬性,因此你undefined


您可能會發現這個問題有幫助,以及:Access/process (nested) objects, arrays or JSON以及由馬特(在其他問題)提到的,如果你想調試你的代碼,使用console.log

+0

這是非常有意義的,因爲之前我通過jQuery發送數據我這樣做JSON.stringify(parameterArray)所以是我有一個字符串,而不是一個對象。感謝您指出這些人。 – user1735894