我试图创造,我可以访问我的脚本中任何一个多维数组,但我总是得到“类型错误:未定义不是(评估对象‘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。
谢谢您的帮助。
在尝试进行访问之前,初始化你的二维数组的部分。例如:
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}
}