Javascript对象数组访问属性未定义?

时间:2013-01-15 23:28:56

标签: javascript arrays json

以下是我从firebug获得的一些输出

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

你可以在那里看到JS Object数组并注意div_undefined。如果你看下面的功能,我知道我的对象是定义的,因为它正在打印出来。当我尝试访问ArticleID

时,为什么Items [0]返回undefined

这是我的函数

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

1 个答案:

答案 0 :(得分:6)

如果连接Items产生此输出,那么它是字符串(包含JSON),您必须首先将其解析为JS数据结构(在本例中为数组):< / p>

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正如Matt(以及其他问题)所述,如果您想调试您的代码,请使用{{1} }。