Javascript对象在固定长度for循环中未定义

时间:2012-12-05 17:27:20

标签: javascript json

我有一个JSON对象,我使用jQuery的parseJSON函数进行解析。我将其中一个子对象分配给一个局部变量,然后我使用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,但赋值总是失败。我做错了什么?

3 个答案:

答案 0 :(得分:2)

而不是

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

添加数组对象的检查条件

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

也许您所指的数组可能没有10个条目。后一种方法应该解决问题..

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:-2)

使用foreach代替固定长度for循环。