jQuery多维数组和作用域
我试图创建一个多维数组,我可以访问脚本中的任何地方,但我总是得到一个“typeError:undefined不是一个对象(计算“arr_l[indx_td][indx_tr]” 以下是我的简化代码: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;
$(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之前您的答案帮助了我(之后仍然有错误,但它将我引向了正确的方向),谢谢。它起作用了。非常感谢。我不知道我必须检查同一数组的每个维度是否存在。它起作用了。非常感谢。我不知道我必须检查同一数组的每个维度是否存在。