我只能将三个元素添加到二维数组中,而不是四个

时间:2013-02-07 02:41:05

标签: javascript

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title></title>
  <script type="text/javascript">
     function arr(){
     var a=new Array(new Array());
     var x;
     for(i=0;i<2;i++)
     {
         for(j=0;j<2;j++)
         {
             x=prompt("Enter an element for a["+i+"]["+j+"]"," ");
             a[i][j]=x;
         }
     }

     for(i=0;i<2;i++)
     {
         for(j=0;j<2;j++)
         {
            document.write(a[i][j]);
         }
     }

     document.close();

     }


     </script>

</head>

<body onLoad="arr();">

</body>
</html>

上面的代码在Firefox上测试过。仅显示三个提示,而不是四个:

a[0][0]
a[0][1]
a[1][0]

也不打印数组。我的错是什么?如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

之前的答案真的很抱歉,这是正确答案

    <!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title></title>
  <script type="text/javascript">
     function arr()
     {
     var a = new Array();
     var x;

 for(i=0;i<2;i++)
 {
     a[i] = new Array();
     for(j=0;j<2;j++)
     {
         x="";
         x = prompt("Enter an element for a["+i+"]["+j+"]","");
     }
 }

 for(i=0;i<2;i++)
 {
     for(j=0;j<2;j++)
     {
        document.write(a[i][j]);
     }
 }

 document.close();

 }


 </script>

问题是你必须在第一个数组中声明新数组 例如:How can I create a two dimensional array in JavaScript?

答案 1 :(得分:1)

您声明一个数组少于您应该的数组。对于此示例,您需要一个类似[[],[]]的数组。我会像这样编码(允许ij的任何最大值):

function arr(){
     var a = [];
     var x;
     for(i=0;i<2;i++){
         a[i] = [];
         for(j=0;j<2;j++){
             x=prompt("Enter an element for a["+i+"]["+j+"]"," ");
             a[i][j]=x;
         }
     }

     for(i=0;i<2;i++){
         for(j=0;j<2;j++){
            document.write(a[i][j]);
         }
     }

}

它也没有打印的原因是缺少的数组导致错误,中断了函数的执行。

答案 2 :(得分:0)

您的数组是这样创建的:a[[]]

因此,您只能访问a[0][0]a[0][1],并且[1]返回undefined。

您可以像这样创建数组。 a = [[], []];,这将解决您的问题。