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