代码之家  ›  专栏  ›  技术社区  ›  Bachir Messaouri

jquery多维数组和范围

  •  0
  • Bachir Messaouri  · 技术社区  · 7 年前

    我试图创建一个多维数组,我可以在脚本中的任何地方访问它,但我总是得到一个“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 回复  |  直到 7 年前
        1
  •  2
  •   Daniel Beck    7 年前

    在尝试访问二维数组之前,请先初始化它们的各个部分。例如:

    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}
    }