0

jQueryのparseJSON関数を使用して解析するJSONオブジェクトがあります。子オブジェクトの1つをローカル変数に割り当て、次のようにforループを使用して繰り返します。

var posts = feedObj["posts"];
content+= "<h2 title=\"" + feedDescription + "\"><a href=\"" + feedPermalink + "\">" + feedTitle + "</a></h2>";
content+= "<ul class=\"feedList\">";
for (var i = 0; i < 10; i++) {
     console.log(posts[i]["postTitle"]);
     var postTitle = posts[i]["postTitle"];
     if((typeof posts[i] != "undefined") || postTitle != null) {
          content+= "<li>";
          console.log("AJ::PostTitle"+postTitle);
          content+= "<a href=\"" + decodeURIComponent(posts[i]["permaLink"])  + "\" target=\"_blank\">" + unescapeHTML(postTitle) + "</a>";
           content+= "</li>";
     }
}

何らかの理由で、var postTitle = posts[i]["postTitle"];常に次のエラーが発生します。 Uncaught TypeError: Cannot read property 'postTitle' of undefined

なぜこれが起こっているのか分かりません。consoleステートメントはpostTitleを正しく出力しますが、割り当ては常に失敗します。私は何が間違っているのですか?

4

3 に答える 3

2

それ以外の

for (var i = 0; i < 10; i++) {

配列オブジェクトのチェック条件を追加します

for (var i = 0; i < posts.length ; i++) {

参照している配列に10個のエントリが含まれていない可能性があります。後者のアプローチで問題が解決するはずです。

于 2012-12-05T17:29:32.590 に答える
1

最初の 10 件の投稿を取得する場合は、次のように置き換えます

for (var i = 0; i < 10; i++) {

for (var i = 0; i < 10 && i < posts.length; i++) {
于 2012-12-05T17:38:47.750 に答える
-2

foreach固定長のforループの代わりに使用します。

于 2012-12-05T17:30:44.970 に答える