Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery多维数组和作用域_Jquery_Multidimensional Array_Scope - Fatal编程技术网

jQuery多维数组和作用域

jQuery多维数组和作用域,jquery,multidimensional-array,scope,Jquery,Multidimensional Array,Scope,我试图创建一个多维数组,我可以访问脚本中的任何地方,但我总是得到一个“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;

我试图创建一个多维数组,我可以访问脚本中的任何地方,但我总是得到一个“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;
    }
})
我只希望这个数组能够工作,并且可以在脚本中的任何地方访问。显然,我没有像我应该声明的那样声明这个数组,但我不知道如何解决这个问题

我没有创建JSFIDLE,因为没有可显示的内容


感谢您的帮助。

在尝试访问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}
}

在尝试访问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}
}

move arr_l=new Array();在dom ready之前您的答案帮助了我(之后仍然有错误,但它将我引向了正确的方向),谢谢。move arr_l=new Array();在dom ready之前您的答案帮助了我(之后仍然有错误,但它将我引向了正确的方向),谢谢。它起作用了。非常感谢。我不知道我必须检查同一数组的每个维度是否存在。它起作用了。非常感谢。我不知道我必须检查同一数组的每个维度是否存在。