2013-07-08 218 views
0

當Update()運行時,我得到一個錯誤,指出map [x]未定義在「map [x] [y] = rawmap [rawmapcount];」我不知道爲什麼?for循環中的變量未定義?

var currentuser; 
var map = new Array(63); 
for(x = 0;x < 36;x++) { 
    map[x] = new Array(35); 
} 

function Update(login) { 
    $.post("server.php",{update:1,login:login},function(data) { 
     if(data == 0) {window.location.href = "WEBSITE";} 
     else { 
      var rawdata = data.split("[BRK]"); 
      currentuser = rawdata[0]; 
      var rawmap = rawdata[1].split("|"); 
      var rawmapcount = -1; 
      var x; 
      var y; 
      for(x = 0;x < 64;x++) { 
       for(y = 0;y < 36;y++) { 
        rawmapcount++; 
        map[x][y] = rawmap[rawmapcount]; 
       } 
      } 
     } 
    }); 
} 

Update(1); 
//setInterval(function() {Update(0);},500); 
+0

它與您的數據有關。 – Mohsen

回答

5

你初始化的map第36位,但你要訪問64個位置,就好像他們都初始化。

for(x = 0;x < 36;x++) { // <= Note the range! 
    map[x] = new Array(35); 
} 
    . . . 
     for(x = 0;x < 64;x++) { // <= Note the range! 
      for(y = 0;y < 36;y++) { 
       rawmapcount++; 
       map[x][y] = rawmap[rawmapcount]; 
      } 
     } 

另外,你的y範圍是36,而不是35。然而,這並不會導致錯誤,因爲JavaScript會自動延伸的陣列的範圍內。實際上,您可以使用以下方式初始化map的每個元素:

map[x] = [];