TypeError document.getElementByID()...是否为空?

时间:2012-12-07 23:44:18

标签: javascript html getelementbyid

有谁能告诉我为什么我会收到这个错误?

  

" TypeError:document.getElementById(...)为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>

当我尝试运行它时,我从上面得到了这个错误。

我还尝试过硬编码&#34; ID&#34;如'00''01',它仍然给我相同的错误消息。

有谁知道我做错了什么?我到处都看了,到处都说基本相同的事情应该很容易,但是我无法理解这一点。

编辑:第25行是document.getElementById(i.j).innerHTML = initBoard[i][j];

3 个答案:

答案 0 :(得分:3)

您希望将数字转换为字符串并将其连接起来。

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

您有i.j,它会使用i引用的数字,并询问其j属性,该属性将返回undefined

答案 1 :(得分:2)

是的 - 同样的问题曾经发生在我身上。问题是:

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。

因此,您必须更换分配ID的方式

另外 - 你的i.j方法不正确

答案 2 :(得分:2)

确保在文档完全加载后执行代码。像

这样的东西
window.addEventListener("load", function() {
     <your current code>
},0);

正如其他海报所说,使用像“cell”+ i +“_”+ j这样的东西也是一个好主意。我把下划线放在一边,这样“111”就不含糊了。