Javascript 循环超出范围?

Javascript 循环超出范围?,javascript,html,quickblox,Javascript,Html,Quickblox,我正在使用Javascript库从聊天服务器中提取数据。该库与此无关,但它是quickblox。数据返回到我的应用程序中并且可以看到,但是当我尝试在他们返回的对象上循环时,它超出了范围,无法获取未定义的“最后一条消息”。循环应该为res.items[i].length运行,这在mo处是两个,但它似乎正在尝试继续运行 var onDialogs = function(err, res){ console.log("----------------------

我正在使用Javascript库从聊天服务器中提取数据。该库与此无关,但它是quickblox。数据返回到我的应用程序中并且可以看到,但是当我尝试在他们返回的对象上循环时,它超出了范围,无法获取未定义的“最后一条消息”。循环应该为res.items[i].length运行,这在mo处是两个,但它似乎正在尝试继续运行

        var onDialogs = function(err, res){
            console.log("------------------------------------List Of Dialogs------------------------------------",res);
            var count = 0;
            var sent;

            var i = 0;
                console.log("res.items.length",res.items.length)
                for (i;i<=res.items.length;i++){
                    console.log("this one: ", res.items[i]);
                    if (res.items[i].last_message===null||res.items[i].last_message===undefined||res.items[i].last_message===""){
                        alert("SOMETHING WENT WRONG");
                    }
                else{
                    console.log("RES.ITEMS: ", res.items);
                console.log("RES ITEMS LEN", res.items.length);
                console.log("***********************I IS SET TO: ",i," *******************************************");
                console.log("RAWR",res.items);
                console.log(res.items[i].last_message_date_sent,res.items[i].last_message);
                console.log(res.items[i]);

                if (res.items[i].last_message === undefined || res.items[i].last_message===null || res.items[i].last_message===""){
                    console.log("FAIL");
                }
                else{
                    var dialogID = res.items[i]._id;
                    var sent = res.items[i].created_at;
                    console.log(res.items[i].created_at);
                    var year = sent.substring(0,4);
                    var month = sent.substring(5,7);
                    var day = sent.substring(8,10);
                    var userIDInChat;
                    var j =0;
                    userArray=[];

                    var userArray = res.items[i].occupants_ids;
                    console.log("USER ARRAY: ",userArray);
                    for (j; j<userArray.length; j++){
                        console.log(userArray[j]);
                        var testID = window.localStorage.getItem("userID");
                        console.log("USERARRAY[j]", userArray[j]);
                        if (userArray[j] != testID){
                            console.log("INSIDE THE IF STATEMENT");
                            userIDInChat = userArray[j];
                            window.localStorage.setItem("userIDInChat", userIDInChat);
                            console.log("//*******BLOCK ID SET TO********\\", userIDInChat, testID, res);
                            $.get("http://www.domain.co.uk/API/getUserByID.php", { userID: userIDInChat}, function (data) {
                                console.log("API CALL:",data);
                                chatOpponent = data;
                                console.log(chatOpponent);
                                console.log("------------------------------------------------------------------------------------------");
                                renderBlock(res,j,i,chatOpponent,userIDInChat,userArray,testID,day,month,year,dialogID);
                            });
                        }
                    }
                }
            }
        }
   //End block
        };


        function renderBlock(res,j,i,chatOpponent,userIDInChat,userArray,testID,day,month,year,dialogID){
                console.log("(res,j,i,chatOpponent,userIDInChat,userArray,testID)");
                console.log("RENDERBLOCK PARAMS: ",res,j,i,chatOpponent,userIDInChat,userArray,testID);
                //insert function here
                console.log("RES: ",res);
                var senderID = userIDInChat;
                //compare date - vs. moment - today, yesterday or date
                sent = day + "/" + month + "/" + year;
                console.log(sent);
                var onMessages = function(err,result){
                    window.localStorage.setItem("RESULTTEST",result);
                    console.log("ONMESSAGESRESULTHERE",err,result);
                    //console.log("---------onMessages---------",result.items[i].date_sent);s
                };
                var msgList = QB.chat.message.list({chat_dialog_id: dialogID}, onMessages);
                var messages;
                console.log(messages);
                if (res.items[i].last_message.length>=140) {
                    var last_message = res.items[i].last_message.substring(0,140)+".....";
                }
                else{
                    var last_message = res.items[i].last_message;
                }
                var readFlag = res.items[i].read;
                console.log("SENDERID:", senderID, "username: ", chatOpponent, "last_message", last_message, "sentFlag");
                if (readFlag === 1){
                    var read = "fa-envelope-o";
                }
                else {
                    var read = "fa-envelope";
                }
                var html = "<div class='messageBlock' id='"+senderID+"'><div style='width:10%;min-height:64px;float:left;'><i class='fa '"+read+"'></i><p>"+sent+"</p></div><div style='width:90%;min-height:64px;float:right;'><p class='user'><b><i>"+chatOpponent+"</b></i></p><p>"+last_message+"</p></div></div>";

for(i;iSimple)你循环一次太多了

for (i;i<=res.items.length;i++){
        ^^

用于(我想我们是不是应该浏览所有这些html/css/js的行来找到你要问的那一行?只发布与你的问题相关的代码对不起,我本不想发布这么多代码!我的错。我已经删掉了它-我知道那里还有很多代码,但我不太确定问题是否比预期的更早出现下面答案中的e行代码有问题,但在更正代码后问题仍然存在。你能找出原因吗?这是因为for循环嵌套的方式吗?对不起,我不是真的想发布,所以我没有意识到你需要清理多少垃圾!谢谢:)
for (i;i<=res.items.length;i++){
for (i;i<res.items.length;i++){
for (i;i<=res.items.length;i++){
        ^^
for (i;i<res.items.length;i++){
        ^^