Javascript 未定义的HTML元素
我用javascript制作了一个游戏。你可以试试。(特别是用于再现错误) 我很难找到的错误是 未捕获的TypeError:无法读取未定义的属性“innerHTML” 但我不确定为什么它没有定义。我有一张有64个单元格的桌子(做一个棋盘)。它们都被建造得平淡无奇Javascript 未定义的HTML元素,javascript,html,css,chess,Javascript,Html,Css,Chess,我用javascript制作了一个游戏。你可以试试。(特别是用于再现错误) 我很难找到的错误是 未捕获的TypeError:无法读取未定义的属性“innerHTML” 但我不确定为什么它没有定义。我有一张有64个单元格的桌子(做一个棋盘)。它们都被建造得平淡无奇 <table border=1 style="border: 1px solid black; table-layout: fixed;"> <tr> <td></td><
<table border=1 style="border: 1px solid black; table-layout: fixed;">
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr><tr>
...
我真的以为我已经弄清楚了什么时候使用var声明变量和不使用var声明变量之间的区别,但我无法找出导致此错误的单个var。任何帮助都将不胜感激。问题是
n
在这一点上等于64。tds
数组的总长度为64(或0到63),它正在生成错误,因为n
表示的元素超出了数组的范围。边界测试:
if (x > 0 && y < 6) { //bottom right
您的错误-是关于读取
innerHTML
属性-您实际上在哪里这样做?“给我们看看那个代码。”本杰明补充道。考虑到我遇到的所有方法,其中一些方法在代码中多次出现。问题是,n
在这一点上等于64。tds
的总长度是64(或0到63),它正在生成一个错误,因为n
表示的元素超出了数组的范围。@Andy这不会生成一个数组外索引错误吗?出现这种情况的单元格位于表中的多个位置。它表示tds[n]
是未定义的
,而不是innerHTML
。如果你不相信我是64岁,那就自己做一个测试吧。我以前就开始做这个,当我在意识到我可以做坐标系之前遇到问题时,又回到了疯狂的重复。感谢您查看代码并找到改进的方法!
if (tds[cell].innerHTML === "") {
if (tds[n].innerHTML === "♞") {
tds[cell].innerHTML = "♞";
tds[target].innerHTML = "♘";
td.innerHTML = "♞";
if (x > 0 && y < 6) { //bottom right
var knight_moves = [[-1, -2], [1, -2], [-2, -1], [2, -1], [-2, 1], [2, 1], [-1, 2], [1, 2]];
for (var i= knight_moves.length; i-->0;) {
var other_x = x + knight_moves[i][0];
var other_y = y + knight_moves[i][1];
if (other_x>=0 && other_x<8 && other_y>=0 && other_y<8) {
var cell = table.rows[other_y].cells[other_x];
if (cell.innerHTML=='♞') ...
}
}