在Javascript中填充2d图像数组的问题

时间:2011-08-22 09:23:30

标签: javascript arrays image 2d

我需要在Javascript中使用2d图像数组并编写以下内容: -

  var arrImages = new Array(3,3);
  var strTemp;
  for (intX=0; intX<3; intX++)
  {
    for (intY=0;intY<3;intY++)
    {
      strTemp = "<br>arrImages[" + intX + "][" + intY + "]";
      try
      {
        arrImages[intX][intY] = new Image();
        document.write(strTemp + " - Success");
      }
      catch (err)
      {
        document.write(strTemp + " - Fail - " + err.description);
      }
    }
  }

这在IE中产生以下内容: -

arrImages [0] [0] - 成功
arrImages [0] [1] - 成功
arrImages [0] [2] - 成功
arrImages [1] [0] - 成功
arrImages [1] [1] - 成功
arrImages [1] [2] - 成功
arrImages [2] [0] - 失败 - 期望对象
arrImages [2] [1] - 失败 - 对象预期
arrImages [2] [2] - 失败 - 预期的对象

在Firefox,Chrome&amp; Safari,“预期的对象”显示为“未定义”。

有没有人知道为什么0,0 - &gt; 1,2成功但其他一切都失败了?

肖恩。

2 个答案:

答案 0 :(得分:5)

var arrImages = new Array(3,3);

相当于

var arrImages = [3, 3];

(Documentation on MDN here)

因此,arrImages[2]未定义,其中索引0和1实际上包含对象。请注意,javascript数组不是固定大小的,因此创建它们时无需指定长度。

您需要手动创建多维数组,例如:

arrImages = new Array();
for (intX=0; intX<3; intX++)
{
  arrImages[intX] = new Array();
  ...

答案 1 :(得分:0)

现在改写为: -

  var arrImages = new Array();
  var strTemp;
  for (intX=0; intX<3; intX++)
  {
    arrImages[intX] = new Array();
    for (intY=0;intY<3;intY++)
    {
      strTemp = "<br>arrImages[" + intX + "][" + intY + "]";
      try
      {
        arrImages[intX][intY] = new Image();
        document.write(strTemp + " - Success");
      }
      catch (err)
      {
        document.write(strTemp + " - Fail - " + err.description);
      }
    }
  }

谢谢,效果很好。