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 回答