我想在javascript函数中创建一个二维数组。我发现代码应该这样做但不会。我声明数组然后定义一个函数来向数组添加元素,这些元素也是数组。
// Array function
var card_array = new Array();
function card_array(card_id, card_top, card_left) {
alert('array');
this.card_id = card_id;
this.card_top = card_top;
this.card_left = card_left;
}
// Toggle LinkCard minimize/expand
function toggle_linkcard(toggle, card_id) {
var icard = 0;
$('.linkcard').each(function () {
card_top = $(this).position().top;
card_left = $(this).position().left;
card_i = $(this).attr('id');
card_array[card_array.length++] = new card_array(card_i, card_top, card_left);
icard++;
});
alert(card_array);
}
我向数组添加元素的代码行会破坏代码。
card_array[card_array.length++] = new card_array(card_i, card_top, card_left);
我该怎么办?
答案 0 :(得分:2)
您将函数的名称定义为card_array
,与变量的名称相同。所以在那行代码之后,你没有任何名为card_array
的变量,只有函数。尝试更改变量或函数名称。
答案 1 :(得分:2)
这里的问题是您有两个具有相同名称的值:card_array
new Array()
函数声明最后发生,因此获胜。因此,当您执行表达式card_array[card_array.length++]
时,您在函数实例上执行此操作,而不是数组。
要解决此问题,请将函数名称更改为唯一名称。
答案 2 :(得分:0)
只需更改此行:
var card_array = new Array();
成:
var my_card_array = new Array();
这一个:
card_array[card_array.length++] = new card_array(card_i, card_top, card_left);
成:
my_card_array.push(new card_array(card_i, card_top, card_left));
当然,请更改警报。