我用 javascript 制作了一个Knight's Tour游戏。你可以在这里试试。(特别是为了重现错误)
我很难找到读取的错误
未捕获的类型错误:无法读取未定义的属性“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>
...
这是页面上唯一的表格。我使用 javascript 来检索所有 td 元素,并通过它们进行迭代,为游戏添加 id、类、背景颜色和 onclick eventListeners。
var tds;
window.onload = function() {
tds = document.getElementsByTagName("td");
for (var i = 0; i < tds.length; i++) {
if (typeof window.addEventListener === 'function') {
(function (td) {
...
td.addEventListener('click', function() {
...
似乎有几个不同的单元会重复发生此错误。有时我可以让单个单元格产生错误,有时我不能。一个可重复的示例是首先移动到最底行,倒数第二个单元格,然后尝试移动到单元格上两个向上,一个从它沿侧面向右移动。
我经常在 onclick 中阅读 innerHTML 属性。我指的是 td 元素的全局 tds 数组。这里基本上是我自己访问它们的所有形式。
if (tds[cell].innerHTML === "") {
if (tds[n].innerHTML === "♞") {
tds[cell].innerHTML = "♞";
tds[target].innerHTML = "♘";
td.innerHTML = "♞";
我真的以为我在阅读有关使用 var 声明变量与不使用它之间的区别时已经弄清楚了,但我无法弄清楚导致此错误的单个 var。任何帮助,将不胜感激。