2012-12-05 3 views
0

jQuery의 parseJSON 함수를 사용하여 구문 분석하는 JSON 객체가 있습니다. 어떤 이유고정 길이 루프에서 Javascript 객체가 정의되지 않음

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을 올바르게 출력하지만 할당은 항상 실패합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 대신

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

+0

으로, 처음 10 개 게시물을 얻을 바꾸려면,'당신의 기존 전에 로그 문? 'posts' 배열의 인덱스 중 하나가 정의되지 않은 것처럼 보입니다. 대신 로그 문에서 오류가 발생했을 수 있습니다. – Krease

+0

@Chris 그게 문제였습니다. for 루프 조건을 posts.length로 변경하여 수정했습니다. –

답변

2

아마 당신이 언급하는 배열이 10 개 항목이되지 않을 배열 객체

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

의 검사 조건을 추가합니다. 나중에 접근하면 문제가 해결됩니다.

+0

환상적입니다. 그거였다. 이 오류의 원인이되는 몇 가지 추가 데이터 소스를 추가했습니다. 고마워요 :) –

+0

@AJ. .. 도와 줘서 도움이 되었어. –

-2

고정 길이 for 루프 대신 foreach을 사용하십시오.

+0

아니면 그냥 for 루프, 올바른 방법 – Ian

+0

@Ian 음, 그래, 그게 답안에 포함되어 있지만, 언어가 'foreach' 개념을 추가 했으므로 오류가 발생하지 않을 것입니다. 'for' 루프는 올바른 방법입니다. 잘못 사용하는 것이 어렵 기 때문에 선호해야합니다. – djechlin

+0

for 루프에서 어떤 오류가 발생합니까? 정의되지 않은 항목? – Ian

1

당신은

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

당신은 '을 console.log (게시물 [I])를 추가하면 어떻게됩니까

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

+1. 하지만, 전송되는 데이터를 제한하기 위해 클라이언트 측 대신 제한을 서버 측으로 이동하겠습니다. –

+1

게시물 수가 10보다 큰 경우 어떻게해야합니까? 이것은 실패 할 것입니다 ... – Ian

+0

@ 이안 "테스트 한대로 작동해야합니다"라고 말한 이유가 있습니다. 당신은 틀리다 – Robert00001

관련 문제