0

これが私がfirebugから得たいくつかの出力です

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

そこにJSObject配列があり、div_undefinedに注目してください。以下の関数を見ると、印刷されているため、オブジェクトが定義されていることがわかります。ArticleIDにアクセスしようとするとItems[0]が未定義を返すのはなぜですか

これが私の関数のコードです

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

1 に答える 1

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


この質問も役立つかもしれません:アクセス/処理(ネストされた)オブジェクト、配列、またはJSONそしてMattが述べたように(そして他の質問で)、コードをデバッグしたい場合は、を使用してくださいconsole.log

于 2013-01-15T23:32:52.237 に答える