这里我想给一个多维数组分配四个属性。如果它是$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++;
});
控制台错误:未捕获类型错误:无法设置未定义的属性"tp"
之所以会出现Cannot set property of undefined
错误,是因为创建时子数组是undefined
。
您需要将子数组设置为空的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。
我希望这能有所帮助!