Javascript двумерный массив - PullRequest
1 голос
/ 18 ноября 2011

Я хочу создать двумерный массив в функции 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 ]

2 голосов
/ 18 ноября 2011

Проблема здесь в том, что у вас есть два значения с одинаковым именем: card_array

  • Переменная с именем, которая инициализируется как new Array()
  • Функция, которая принимает 3 параметра

Объявление функции происходит последним и, следовательно, выигрывает.Поэтому, когда вы выполняете выражение card_array[card_array.length++], вы делаете это для экземпляра функции, а не для массива.

Чтобы исправить это, измените имя функции на уникальное имя.

2 голосов
/ 18 ноября 2011

Вы определили имя функции как card_array, то же имя, что и у переменной.Поэтому после этой строки кода у вас нет никакой переменной с именем card_array, только функция.Попробуйте изменить имя переменной или функции.

0 голосов
/ 18 ноября 2011

Просто измените эту строку:

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);
* * 1009 в: * * 1010
my_card_array.push(new card_array(card_i, card_top, card_left));

И, конечно, сменить предупреждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...