[英]Javascript two-dimensional array
I want to create a two dimensional array in a javascript function. 我想在javascript函数中创建一个二维数组。 I found code that should do that but doesn't. 我发现代码应该这样做但不会。 I declare the array then define a function to add elements to the array which are also arrays. 我声明数组然后定义一个函数来向数组添加元素,这些元素也是数组。
// 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);
}
The line of code where I add elements to the array breaks the code. 我向数组添加元素的代码行会破坏代码。
card_array[card_array.length++] = new card_array(card_i, card_top, card_left);
What should I fix in that? 我该怎么办呢?
You defined the function's name as card_array
, same name as the variable's. 您将函数的名称定义为card_array
,与变量的名称相同。 So after that line of code, you don't have any variable named card_array
, only the function. 所以在那行代码之后,你没有任何名为card_array
变量,只有函数。 Try changing your variable or function name. 尝试更改变量或函数名称。
The problem here is that you have two values with the same name: card_array 这里的问题是你有两个具有相同名称的值:card_array
new Array()
一个名为的变量,初始化为一个new Array()
The function declaration happens last and hence wins. 函数声明最后发生,因此获胜。 So when you execute the expression card_array[card_array.length++]
you are doing so on a function instance, not an array. 因此,当您执行表达式card_array[card_array.length++]
您在函数实例上执行此操作,而不是数组。
To fix this change the function name to a unique name. 要解决此问题,请将函数名称更改为唯一名称。
Just change this line: 只需改变这一行:
var card_array = new Array();
into: 成:
var my_card_array = new Array();
And this one: 还有这个:
card_array[card_array.length++] = new card_array(card_i, card_top, card_left);
into: 成:
my_card_array.push(new card_array(card_i, card_top, card_left));
And of course, change the alert. 当然,改变警报。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.