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;

しかし、プッシュで二乗表記を使用する方法はよりクリーンだと思います。

于 2012-06-24T00:34:05.353 に答える
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 に答える
2

コードの最初の行:

var myArray = new Array();

...要素を持たない新しい1次元配列を作成します。myArrayそれからあなたが言うとき:

myArray[0][0] = 0;          

...まだ存在していないディメンションにアクセスしようとしています。つまり、配列myArray[0]ですが、まだ要素がないためundefinedです。つまり、と言っているようなものです。myArraymyArray[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];

または、(特にこれらがハードコードされた値である場合)最も簡単なのは、ネストされた配列リテラルを介して1つのステートメントですべてを作成することです(空白は無視されます)。

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

(数値データの場合、これらの先行ゼロは表示されなくなることにも注意してください。ゼロを保持する場合は、("00012"の代わりに)文字列を使用してください。)00012

于 2012-06-24T01:03:51.557 に答える