2

所以我试图通过两个“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

不用说,我很生气和困惑。究竟什么是未定义的?我错过了什么?我在每次传递时都输入andalert()的值,它们很好,但是当它到达上述行时,它会抛出错误。iji=0j=1

提前致谢。

4

1 回答 1

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(). 它被认为更时尚。:)

于 2013-03-10T06:36:23.890 回答