这里我想为多维数组分配四个属性。
如果它是一个由$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++;
});
CONSOLE ERROR:未捕获TypeError:无法设置属性' tp'未定义的
答案 0 :(得分:1)
您收到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。
我希望这有帮助!