我有一个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,但赋值总是失败。我做错了什么?
答案 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循环。