Javascript二维数组

时间:2011-11-18 15:53:35

标签: javascript arrays multidimensional-array

我想在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);

我该怎么办?

3 个答案:

答案 0 :(得分:2)

您将函数的名称定义为card_array,与变量的名称相同。所以在那行代码之后,你没有任何名为card_array的变量,只有函数。尝试更改变量或函数名称。

答案 1 :(得分:2)

这里的问题是您有两个具有相同名称的值:card_array

  • 名为的变量,初始化为new Array()
  • 一个需要3个参数的函数

函数声明最后发生,因此获胜。因此,当您执行表达式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));

当然,请更改警报。