0

运行 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);
4

1 回答 1

5

您正在初始化 的前 36 个位置map,但您尝试访问 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] = [];
于 2013-07-08T20:49:25.547 回答