0

我有一个使用 jQuery 的 parseJSON 函数解析的 JSON 对象。我将其中一个子对象分配给一个局部变量,然后使用 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

我不知道为什么会这样。控制台语句正确打印出 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

如果您想获得前十个帖子,请替换

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 回答