jQuery的多维数组和范围

问题描述 投票:0回答:1

我试图创造,我可以访问我的脚本中任何一个多维数组,但我总是得到“类型错误:未定义不是(评估对象‘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。

谢谢您的帮助。

jquery multidimensional-array scope
1个回答
2
投票

在尝试进行访问之前,初始化你的二维数组的部分。例如:

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}
}
© www.soinside.com 2019 - 2024. All rights reserved.