0

我有以下代码:

<html>
<body>
<div style="background-color: lightblue;" onClick="alert(myArray[0][1])">
this is a div
</div>

<script type="text/javascript">
var myArray = new Array();
myArray[0][0] = 0;
myArray[0][1] = 00012;
myArray[0][2] = 00006;
myArray[1][0] = 1;
myArray[1][1] = 00004;
myArray[1][2] = 00001;
</script>
</body>
</html>

当我点击 div 时,什么也没有发生;没有警报。但是,当我将警报的内部更改为字符串(例如“test”)时,会出现警报框。

我究竟做错了什么?如何获取多维数组中项目的值?

谢谢!

4

3 回答 3

2

像这样写出来:

<div style="background-color: lightblue;" onClick="alert(myArray[0][1])">
    this is a div
</div>

<script type='text/javascript'>
    var myArray = [];
    myArray.push([0, 00012, 00006]);
    myArray.push([1, 00004, 00001]);
</script>

编辑

问题是当你写这个时:

var myArray = new Array();
myArray[0][0] = 0;

myArray中的第一个项目是未定义的,所以你不能用它做任何事情。使用此方法,您必须先创建数组:

var myArray = new Array();
myArray[0] = new Array();
myArray[0][0] = 0;

但我认为将平方符号与push一起使用的方法更简洁。

于 2012-06-24T00:34:05.353 回答
2

您的代码的第一行:

var myArray = new Array();

...将创建一个没有元素的新的一维数组。myArray然后当你说:

myArray[0][0] = 0;          

...您正在尝试访问尚不存在的维度。也就是说,因为虽然它myArray[0]是一个数组,但它还没有任何元素 - 所以就像说.undefinedmyArraymyArray[0][0]undefined[0]

这就是为什么您必须先分配myArray[0]以引用新数组,然后才能访问myArray[0][0]. 同样的事情也适用于myArray[1],因为 JavaScript 本身没有多维数组,它有数组的数组。所以这就是您所需要的(对现有代码进行最小的更改):

var myArray = [];
myArray[0] = [];
myArray[0][0] =  00012;
myArray[0][1] = 00012;
myArray[0][2] = 00006;
myArray[1] = [];
myArray[1][0] = 1;
myArray[1][1] = 00004;
myArray[1][2] = 00001;

注意[]相当于new Array()

一个更易于阅读和键入的选项是通过数组字面量语法创建子数组:

var myArray = [];
myArray[0] = [00012, 00012, 00006];
myArray[1] = [1, 00004, 00001];

或者,最简单的(特别是如果这些是硬编码值)是通过嵌套数组文字在一个语句中创建整个事物(忽略空格):

var myArray = [
                [00012, 00012, 00006],
                [1, 00004, 00001]
              ];

(另请注意,数字数据的前导零会消失:如果要保留零,请使用字符串("00012"而不是)。)00012

于 2012-06-24T01:03:51.557 回答
2

这是您声明多维数组的方式:

MultiArray = new Array(2)

MultiArray [0] = new Array(2)

MultiArray [0][0] = "Tom"

MultiArray [0][1] = "scientist"

MultiArray [1] = new Array(2)

MultiArray [1][0] = "Beryl"

MultiArray [1][1] = "engineer"
于 2012-06-24T00:45:13.887 回答