Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义的HTML元素_Javascript_Html_Css_Chess - Fatal编程技术网

Javascript 未定义的HTML元素

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

我用javascript制作了一个游戏。你可以试试。(特别是用于再现错误)

我很难找到的错误是

未捕获的TypeError:无法读取未定义的属性“innerHTML”

但我不确定为什么它没有定义。我有一张有64个单元格的桌子(做一个棋盘)。它们都被建造得平淡无奇

<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=='♞') ...
    }
}