无法设置属性' 0'在JavaScript中未定义

时间:2017-04-16 05:00:11

标签: javascript

如果我将if(x == 0)更改为if(y == 0),则该函数有效。 这样做的目的是稍后使用2D阵列并显示一些图像。 我有2D阵列,所以我可以像背景一样创造一个炸弹人。

var test = [
  []
];

var tile = {
  width: can.width / 15,
  height: can.height / 15,
}

function render() {

  for (var y = 0; y < 15; y++) {
    for (var x = 0; x < 15; x++) {

      if (x == 0) {
        console.log(x, y);
        var t = {
          width: can.width / 15,
          height: can.height / 15,
        };

        test[y][x] = t;
        test[y][x].posX = x * tile.width;
        test[y][x].posY = y * tile.height;
        test[y][x].num = 1;
      }
    }
  }
}

2 个答案:

答案 0 :(得分:0)

test[0]是一个数组,但test[1]test[14]未定义。如果要初始化其他元素,可以这样做:

for( var i = 0; i < 15; i++ )
    test[i] = []

或类似的东西,虽然它更难阅读:

var test = [ 
    [], [], [], [], [],
    [], [], [], [], [],
    [], [], [], [], []
]

或者,您可以根据需要添加数组元素,而不是预先分配它们:

if( typeof test[y] == 'undefined' )
    test[y] = []

答案 1 :(得分:0)

请参阅,看看你的测试初始化​​,

String text = "<font color=#cc0029>Videos</font> <font color=#ffcc00>(" + numVideos + ")</font>"; 

getSupportActionBar().setTitle(Html.fromHtml(text));

只有1个空数组元素,请看一下你的循环,它肯定会有效test = [[]] ,因为你将访问if (y == 0)

现在,test[0][0], test[0][1], and so on,您无法真正做到这一点,因为元素不是在索引0之后启动的。因此,if(x == 0)

以下更改可能会修复您的代码

test[1] is basically undefined, and test[1][0] will fail