0

このエラーが発生する理由を誰か教えてもらえますか?

「TypeError: document.getElementById(...) is null @ line:25」

私は JavaScript を使用しており、これがこれまで<script>タグ内にあるものです...

var initBoard = new Array(new Array(0, 0, 0, 1),
                      new Array(0, 0, 0, 0),
                      new Array(3, 0, 0, 0),
                      new Array(0, 0, 2, 0)
);

function insertData(){
for(var i = 0; i < 4; i++){
    for(var j = 0; j <4; j++){
        document.getElementById(i.j).innerHTML = initBoard[i][j];

    }
}
}

その下に私のHTML内に<body>私はこれを持っています....

<table border="2" >
<tr align="center">
<td><div id="00">0</div></td>
<td><div id="01">0</div></td>
<td><div id="02">0</div></td>
<td><div id="03">0</div></td>
</tr>

<tr align="center">
<td><div id="10">0</div></td>
<td><div id="11">0</div></td>
<td><div id="12">0</div></td>
<td><div id="13">0</div></td>
</tr>

<tr align="center">
<td><div id="20">0</div></td>
<td><div id="21">0</div></td>
<td><div id="22">0</div></td>
<td><div id="23">0</div></td>
</tr>

<tr align="center">
<td><div id="30">0</div></td>
<td><div id="31">0</div></td>
<td><div id="32">0</div></td>
<td><div id="33">0</div></td>
</tr>

これを実行しようとすると、上記のエラーが発生します。

また、「ID」を'00'orとしてハードコーディングしようとし'01'ましたが、それでも同じエラーメッセージが表示されます。

私が間違っていることを誰かが知っていますか?私はいたるところを見てきましたが、どこでも基本的に同じことを言っています。それは簡単なはずですが、これを乗り越えることはできません.

編集:25行目はdocument.getElementById(i.j).innerHTML = initBoard[i][j];

4

3 に答える 3

3

数値を文字列に変換して連結したいとします。

document.getElementById(i + "" + j).innerHTML = ...

i.j参照する番号を取得しi、そのjプロパティを要求すると、 が返されundefinedます。

于 2012-12-07T23:46:30.887 に答える
2

ドキュメントが完全にロードされた後にコードが実行されることを確認してください。何かのようなもの

window.addEventListener("load", function() {
     <your current code>
},0);

他のポスターが言ったように、 "cell" + i + "_"+jのようなものを使用することも良い考えです。「111」が曖昧にならないようにアンダースコアを入れます。

于 2012-12-08T00:15:29.893 に答える
2

ええ-同じ問題が一度私に起こりました。問題はそれです:

ID および NAME トークンは文字 ([A-Za-z]) で始まる必要があり、その後に任意の数の文字、数字 ([0-9])、ハイフン ("-")、アンダースコア ("_") を続けることができます、コロン (":")、およびピリオド (".")。

そのため、ID の割り当て方法を置き換える必要があります。

また、あなたのijのアプローチは正しくありません

于 2012-12-07T23:49:02.837 に答える