我正在尝试使用带有以下代码的jQuery动态地在2D数组中添加新值:
var disabledTime = [[]];
var index = 0;
$("#addTimeSlot").click(function(){
// do some stuff here...
disabledTime[index].push($('.slotTime').last().prev().val());
disabledTime[index].push($('.slotTime').last().val());
}
当index
为0
时一切正常,但在递增后会给我一个错误:“undefined不是对象”。
我需要创建类似[['1','2'],['3','4']]
的内容,其中元素是动态添加的。谁能帮我?感谢。
答案 0 :(得分:2)
这是因为当index
不为零时,数组中的元素为undefined
。将元素初始化为空数组将起作用。
var disabledTime = [[]];
var index = 0;
$("#addTimeSlot").click(function () {
//do some stuff here...
// Check if the element at `index` is not undefined.
if (disabledTime[index] === undefined) {
// Initialize to empty array.
disabledTime[index] = [];
}
disabledTime[index].push($('.slotTime').last().prev().val());
disabledTime[index].push($('.slotTime').last().val());
});
答案 1 :(得分:1)
这是因为只有索引0才有数组。
您无法推送到不是数组本身的索引。
从一个空数组开始,然后将数组推送到第一个数组:
var disabledTime=[];
var index = 0;
$("#addTimeSlot").click(function(){
//do some stuff here...
disabledTime.push([]);
disabledTime[index].push($('.slotTime').last().prev().val());
disabledTime[index].push($('.slotTime').last().val());
答案 2 :(得分:0)
你的数组是[[]]
,意味着它包含一个0和0的空数组
在所有其他索引中它是未定义的
基本上做:array[index] = []