代码之家  ›  专栏  ›  技术社区  ›  Ben Shelock

解析json时出现未定义变量错误

  •  0
  • Ben Shelock  · 技术社区  · 16 年前

    我正在尝试解析从 here . 基本上,我所做的就是遍历这些项,对它们排序,然后显示它们。但我有个错误 data.data.children[i] is undefined

    我不明白为什么要这么做?

    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>';
        }
    }
    
    1 回复  |  直到 16 年前
        1
  •  2
  •   phsource    16 年前
    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.length i < data.data.children.length . 注意不平等的变化。

    由于Javascript中的数组是0索引的,因此 i = data.data.children.length 不存在。

    reddits.length