我有以下代码:
<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”)时,会出现警告框。
我做错了什么?如何在多维数组中获取项的值?
谢谢!
答案 0 :(得分: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 的方形符号的方法更清晰。
答案 1 :(得分: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"
答案 2 :(得分:2)
代码的第一行:
var myArray = new Array();
...将创建一个没有元素的新的单维数组myArray
。然后当你说:
myArray[0][0] = 0;
...您正在尝试访问尚不存在的维度。也就是说,myArray[0]
是undefined
,因为虽然myArray
是一个数组,但它还没有任何元素 - 所以myArray[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
)。)