<!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]
也不打印数组。我的错是什么?如何解决这个问题?
答案 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)
您声明一个数组少于您应该的数组。对于此示例,您需要一个类似[[],[]]
的数组。我会像这样编码(允许i
和j
的任何最大值):
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 = [[], []];
,这将解决您的问题。