所以我试图通过两个“for”循环构建一个数组,一个用于多维数组的每个级别。
变量:
var pos = new Array();
var scales = [
2, // Background
0.9, // Slide_1 (farthest back)
1, // Slide 2
1.15 // Slide 3
];
以下是代码:
for(j = 0; j < 5; j++) {
var nextPosition = 0;
for(var i = 0; i < numZones; i++) {
alert(j + '' + i);
pos[j][i] = nextPosition;
nextPosition = (nextPosition + screenWidth + bufferSize) / scales[j];
}
}
它将遍历第一层罚款,但当它转到第二层时,Firebug在pos[j][i] = nextPosition
行引发了一个模糊的错误。它声称
TypeError: can't convert undefined to object
毋庸置疑,我非常恼火和困惑。究竟什么是未定义的?我错过了什么?我alert()
和i
每次传递j
的值i=0
和j=1
,但是当它达到上述时 - 提到的行,它会引发错误。
提前致谢。
答案 0 :(得分:4)
问题是你永远不会定义pos[j]
。因此,pos[j][i]
就像undefined[i]
。试试这个:
for(j = 0; j < 5; j++) {
var nextPosition = 0;
pos[j] = []; <== new statement
for(var i=0; i < numZones; i++) {
alert(j + '' + i);
pos[j][i] = nextPosition;
nextPosition = (nextPosition + screenWidth + bufferSize) / scales[j];
}
}
顺便说一句,我建议使用数组文字初始化pos
:
var pos = [];
而不是new Array()
。它被认为更时尚。 :)