当运行Update()时,我收到一条错误,指出map [x]未定义为“map [x] [y] = rawmap [rawmapcount];”而且我不确定为什么?
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 :(得分: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] = [];