【发布时间】:2020-11-26 20:19:42
【问题描述】:
我是一名学生,我的任务是使用 JavaScript 开发一个井字游戏。我坚持的部分是读取正方形的 html 值。 X 和 O 作为参数 elem 传递给函数 determineWinner(elem)。如何检查所有 3 个方块是否与参数“elem”的内容匹配? 在我的 if 语句中,我尝试过使用winningPos[i][0].innerHTML 等。但它只读取索引而不是html 值。对此的任何帮助将不胜感激。
function determineWinner(elem) {
var winningPos = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
];
var i, j;
for (var i = 0; i < winningPos.length; i++) {
for (var j = 0; j < winningPos[i].length; j++) {
if (winningPos[i][0] == elem && winningPos[i][1] == elem && winningPos[i][2] == elem) {
document.getElementById("status").innerHTML = "Game Over!";
if (elem == "X") {
document.getElementById("message").innerHTML = "User is the winner!!!";
} else if (elem == "O") {
document.getElementById("message").innerHTML = "Computer is the winner!!!";
} else
break;
}
}
}
}
<div class="main">
<div id="message">Welcome to the game of tic tac toe. Click on any cell to begin the game!</div>
<div id="status">This is a new game</div>
<button id="reset" onclick="resetGameBoard()">Reset Game</button>
<div id="wrapper">
<div id="1" class="row">
<div id="0" class="col">
</div>
<div id="1" class="col">
</div>
<div id="2" class="col">
</div>
</div>
<div id="2" class="row">
<div id="3" class="col">
</div>
<div id="4" class="col">
</div>
<div id="5" class="col">
</div>
</div>
<div id="3" class="row">
<div id="6" class="col">
</div>
<div id="7" class="col">
</div>
<div id="8" class="col">
</div>
</div>
</div>
</div>
【问题讨论】:
-
我们还需要查看您的 HTML... 一个想法是让每个 HTML 节点代表一个正方形,该正方形具有
id及其行和列,例如:<div id='02'>` 将是第一行第三列的平方。我认为这将有助于解决您的问题 -
很抱歉。我编辑了问题以包含 HTML。
-
第一个大问题:你重复了
ids(ids 1,2 和 3 重复),ids 必须是唯一的 -
修复它之后,您需要从循环内的 div 中获取内容,例如:
let content = document.getElementById(winningPos[i][j]).innerHTML然后对照elem检查内容...另外,您可能不会需要第二个循环,因为您像这样直接访问索引winningPos[i][2] -
同意@CalvinNunes,但我更绝对,找另一位导师,身份证的唯一性,即使是申请人现在也应该这样做!
标签: javascript innerhtml tic-tac-toe