2013-01-15 194 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