2010-06-03 2 views
0

json을 파헤 치려고 시도 중입니다. here에서 잡았습니다. 기본적으로 내가하는 일은 항목을 반복하고 정렬 한 다음 표시하는 것입니다. 하지만 data.data.children[i] is undefined이라는 오류 메시지가 나타납니다.json을 파싱 할 때 정의되지 않은 변수 오류

나는 왜 그런 생각을 할 수 없습니까?

var json = 'http://www.reddit.com/reddits/mine/.json'; 

GM_xmlhttpRequest({ 
    method: "GET", 
    url: json, 
    onload: reddits 
}); 

function reddits(response){ 
    var txt = response.responseText; 
    var data; 
    var suggested = document.getElementById('suggested-reddits'); 
    if(window.JSON && JSON.parse){ 
     data = JSON.parse(txt); 
    } 
    else{ 
     data = eval("("+txt+")"); 
    } 

    suggested.innerHTML += '<span>reddits you\'re subscribed to </span> <ul id="rsub"></ul>'; 
    GM_addStyle('#rsub{width: 500px;}'); 
    var reddits = new Array(); 
    var rsub = document.getElementById('rsub'); 

    for(i = 0; i <= data.data.children.length; i++){ 
     var r = data.data.children[i].data.display_name; 
     reddits.push(r); 
    } 
    sort(reddits); 
    for(i = 0; i <= reddits.length; i++){  
     rsub.innerHTML += '<li><a href="#" onclick="set_sr_name(this); return false">' + reddits[i] + '</a></li>'; 
    } 
} 

답변

2
for(i = 0; i <= data.data.children.length; i++){ 
    var r = data.data.children[i].data.display_name; 
    reddits.push(r); 
} 

지우기 문제는 for 문입니다. i <= data.data.children.lengthi < data.data.children.length으로 변경하십시오. 불평등 변화에 유의하십시오.

자바 스크립트의 배열은 0으로 인덱싱되므로 i = data.data.children.length의 요소는 존재하지 않습니다.

reddits.length 루프에 대해서도 동일한 작업을 수행해야합니다.