2 acb 5445 acb_5445 于 2017.09.07 11:21 提问

这是什么错误,数组未定义??该怎么改??
 报这个错:Uncaught TypeError: Cannot set property '0' of undefined
var w = 37;  
    var h = 20;  
    var map_arr = [];  
    var start,end;  

    window.onload = function(){  
            handleConnect();
        var map = document.getElementById("map");  
        var arr = [];  

        arr.push("<table width='1550px' height='700px' border='1' cellpadding='0' cellspacing='0'>");  
        for(var i = 0 ; i < h ; i++){  
            arr.push("<tr>");  
            if(!map_arr[i]) map_arr[i] = [];  
            for(var j = 0 ; j < w ;j++){  
                arr.push("<td id='"+j+"-"+i+"' style='border:1px solid #000'>"+j+"-"+i+"</td>");   //onclick='td(" + i + "," + j + ")'
                if(4<j&&j<14&&2<i&&i<5){
                    map_arr[j][i] = 0;
                }else if(19<j&&j<37&&i<7){
                    map_arr[j][i] = 0;
                }else if(j<13&&i>8){
                    map_arr[j][i] = 0;
                }else if(14<j&&j<17&&15<i&&i<17){
                    map_arr[j][i] = 0;
                }else if(22<j&&j<35&&8<i&&i<14){
                    map_arr[j][i] = 0;
                }else if(22<j&&j<35&&14<i&&i<19){
                    map_arr[j][i] = 0;
                }else{
                    map_arr[j][i] = 1;
                }
            }  
            arr.push("</tr>");  
        }  
        arr.push("</table>");  



3个回答

showbo
showbo   Ds   Rxr 2017.09.07 11:34
已采纳

j的for遍历引用的下标反了,


            if(!map_arr[i]) map_arr[i] = [];  //你这里是i
            for(var j = 0 ; j < w ;j++){  
                arr.push("<td id='"+j+"-"+i+"' style='border:1px solid #000'>"+j+"-"+i+"</td>");   //onclick='td(" + i + "," + j + ")'
                if(4<j&&j<14&&2<i&&i<5){
                    map_arr[j][i] = 0;//这里是j,那你第一次遍历i为0时,j=2,那不不是越界了 map_arr[2]为undefined,在赋值就报错了

map_arr[j][i] 这样写的全部改成
map_arr[i][j]

acb_5445
acb_5445 感谢感谢
2 个月之前 回复
hello_MrDj
hello_MrDj   2017.09.07 11:58
if(!map_arr[i]) 的 map_arr[i] = [];    改成 map_arr.splice(i,1);试试
qq_38494537
qq_38494537   2017.09.07 11:25

非一维数组不能直接定义多维,需要层层定义

acb_5445
acb_5445 回复chenjiexixi: 感谢感谢
2 个月之前 回复
qq_38494537
qq_38494537 http://blog.csdn.net/leedaning/article/details/49799699
2 个月之前 回复
acb_5445
acb_5445 只要定义一个二维数组就行了吗
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片