2013-12-08 22 views
1
window.addEventListener('load',function(){ 
var last=0; 
var sub=document.getElementById("sub"); 
var msg=document.getElementById('msg'); 
var msg_bx=document.getElementById("msg_bx"); 
    var re=new XMLHttpRequest(); 
re.open("GET","handler.php?mode=begin",true); 
re.onreadystatechange=function(){ 
    if(re.status==200 && re.readyState==4){ 
     //console.log(re.responseText); 
     var data=JSON.parse(re.responseText); 
     if(data.err_msg){ 
      alert(data.err_msg); 
     } 
     else { 
      for(var o in data){ 
       struct(data[o]); 
      } 
     } 
    } 
} 
re.send(null); 
function struct(data){ 
      s=data.sender; 
      m=data.msg; 
      t=data.time; 
      i=data.id; 
      var bx=document.createElement("div"); 
      bx.className="msg"; 
      msg_bx.appendChild(bx); 
      var sen=document.createElement("div"); 
      bx.appendChild(sen); 
      sen.appendChild(document.createTextNode("Sent by:"+s)); 
      var msg=document.createElement("div"); 
      bx.appendChild(msg); 
      msg.appendChild(document.createTextNode(m)); 
      if(i>=last){ 
       last=i; 
      } 
      console.log(i+" "+last); 
} 
}); 

控制台数据来为::JavaScript的循环运行不正常,同时使用AJAX

2 2 chat.js:64 
    3 3 chat.js:64 
    4 4 chat.js:64 
    5 5 chat.js:64 
    6 6 chat.js:64 
    7 7 chat.js:64 
    8 8 chat.js:64 
    9 9 chat.js:64 
    10 9 chat.js:64 
    11 9 chat.js:64 

{"count1":{ 
       "id":"2", 
       "sender":"1", 
       "msg":"bbfkjvndk?", 
       "time":"1386494886" 
      },"count2":{ 
       "id":"3", 
       "sender":"1", 
       "msg":"bubjhadljlkvdjovjj;ojkd?", 
       "time":"1386494931" 
      },"count3":{ 
       "id":"4", 
       "sender":"1", 
       "msg":"vidhu?", 
       "time":"1386494982" 
      },"count4":{ 
       "id":"5", 
       "sender":"1", 
       "msg":"bvfiuefhilnfdigvfuodahfasviubjcabsyvgUVHJVKJFHV9dhf79gvhkebfvkjhdovi;h7zv9jvhdsbviy7dg89hvdsbyuavgd?", 
       "time":"1386495013" 
      },"count5":{ 
       "id":"6", 
       "sender":"1", 
       "msg":"what the hel??", 
       "time":"1386495367" 
      },"count6":{ 
       "id":"7", 
       "sender":"1", 
       "msg":"?", 
       "time":"1386497097" 
      },"count7":{ 
       "id":"8", 
       "sender":"1", 
       "msg":"?", 
       "time":"1386497097" 
      },"count8":{ 
       "id":"9", 
       "sender":"1", 
       "msg":"what do u want with me??", 
       "time":"1386506545" 
      },"count9":{ 
       "id":"10", 
       "sender":"1", 
       "msg":"so g otbjobjsd?", 
       "time":"1386506554" 
      },"count10":{ 
       "id":"11", 
       "sender":"1", 
       "msg":"what the hell??", 
       "time":"1386507581" 
      }} chat.php:13 

循环停止递增最后后9. 正被使用的结构体功能,使一个基本结构,被称为当数据来作为JSON。 与我过去的增量价值,直到它达到9,然后会因某些原因常甚至当我增加

+0

为什么这么多的代码和一个难以理解的问题? –

回答

0

这是因为"10" >= "9"是在Javascript false

我怀疑data.id是一个字符串。这也使ilast字符串,并在比较i >= last,它们作为字符串进行比较。

在比较它们之前,您可以将其转换为数字:i = +data.id;然后10 >= 9将是true