2014-04-26 215 views
0

这里我想给多维数组指定四个属性。 它的工作原理,如果其由$record.prop = "tp"将属性赋值给多维数组

JSFIDDLE一维数组 - 该部分从行开始88

JQUERY:

var $record = new Array(), 
    i=0, 
    x,y, 
    tp,rt,bt,lt; 
    $record.prop = 'tp'; 
    $record.prop = 'rt'; 
    $record.prop = 'bt'; 
    $record.prop = 'lt'; 
$("td").each(function(){  
    console.log("x:"+(Math.floor(i/$cols))+",y:"+(i%$cols)); 
    x = Math.floor(i/4), 
    y = i%4; 
    if(!$.isArray($record[x])) { $record[x] = []; }  
    //if(!$.isArray($record[x][y])) { $record[x][y] = []; } 
    if($(this).css("border-top-color") == "black"){ 
     $record[x][y].tp = true; 
    } else { $record[x][y].tp = false; } 
    if($(this).css("border-right-color") == "black"){ 
     $record[x][y].rt = true; 
    } else { $record[x][y].rt = false; } 
    if($(this).css("border-bottom-color") == "black"){ 
     $record[x][y].bt = true; 
    } else { $record[x][y].bt = false; } 
    if($(this).css("border-left-color") == "black"){ 
     $record[x][y].lt = true; 
    } else { $record[x][y].lt = false; } 
    i++; 

});

控制台错误:未捕获的类型错误:无法设置的不确定

回答

1

你所得到的Cannot set property of undefined错误是因为子阵列undefined在创建时的理由财产“TP”。

您需要的子阵列设置为空object然后分配值,像这样:

$record[x][y] = {}; 
$record[x][y].tp = '...'; 

编辑

更改在代码中的注释行:

if(!$.isArray($record[x][y])){ $record[x][y] = []; } 

发给:

if (!$.isPlainObject($record[x][y])){ $record[x][y] = {}; } 

这里是工作JSFiddle

我希望这有助于!

+0

没有它的不工作 你可以在jsfiddle –

+0

显示看看编辑的答案,看看是否有效。 – dSquared

+0

sry它没有工作。如果你可以请尝试在jsfiddle你可以来一个工作的解决方案。 –