JQuery многомерный массив и область - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь создать многомерный массив, к которому я мог бы получить доступ в любом месте моего скрипта, но я всегда получаю «typeError: undefined не является объектом (вычисляя« arr_l [indx_td] [indx_tr] ».

Вот мой упрощенный код:

$(document).ready(function() 
{
    arr_l = new Array();
    var indx_td;
    var indx_tr;
    arr_l[indx_td][indx_tr]=new Array();
    var width1;
    var width2;

    $("table td").each(function()
    {
        indx_td= $(this).index();
        indx_tr= $(this).parent().index();

        var element = $(this)
                      .clone()
                      .css({'display': 'inline', 'width': 'auto', 'visibility' : 'hidden'})
                      .appendTo('body');

        var rect1 = $(this)[0].getBoundingClientRect();
        width1 = rect1.right - rect1.left;

        var rect2 = element[0].getBoundingClientRect();
        width2 = rect2.right - rect2.left;      

        element.remove();

        if(! arr_l[indx_td][indx_tr]['width1'])
        {
            arr_l[indx_td][indx_tr]['width1']=0;
            arr_l[indx_td][indx_tr]['width2']=0;
        }       
        arr_l[indx_td][indx_tr]['width1']=width1;
        arr_l[indx_td][indx_tr]['width2']=width2;
    }
})

Все, что я хочу, это чтобы этот массив работал и был доступен в любом месте скрипта. Очевидно, я не объявляю массив, как должен, но я не делаюПосмотрите, как я могу решить эту проблему.

Я не создал jsfiddle, потому что ничего не отображается.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 05 февраля 2019

Инициализируйте части вашего 2d массива, прежде чем пытаться получить к ним доступ.Например:

arr_l = new Array()
// ...
// before trying to access the 2nd dimension, make sure it exists:
if (!(arr_l[index_td]) {
  arr_l[index_td] = new Array();
}
// and so on:
if (!(arr_l[index_td][index_tr]) {
  arr_l[index_td][index_tr] = {width: 0, height: 0}
}
...