2014-04-26 273 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你可以來一個工作的解決方案。 –