gpt4 book ai didi

javascript - 井字棋 javascript 中的指示器错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:43:53 25 4
gpt4 key购买 nike

我遇到了基于我的 tic tac toe javascript 代码中创建的指标的问题。你能帮我解决吗?

cell.indicator = 指示器;

控制台提到了这一点未捕获的类型错误:无法将属性“指示器”设置为 null 加载时 (javascript.js:54) 这是编码。

var squares =[];
var EMPTY = '\xA0'
var score;
var moves;
var turn = 'X';

var wins = [ 119, 8064, 516096, 17930144, 2113929216, (1.352914698*10^10),
2181570690, 4363141380,8726282760,(1.745256552*10^10), (3.490513104*10^10),
(6.981026208*10^10),(96.926057496*10^10), 2216757312];

var startNewGame = function (){
turn = 'X';
score = {'X': 0 , 'O': 0};
moves =0;
for (var i = 0; i < squares.length; i += 1){
squares[i].firstChild.nodeValue = EMPTY;
}
};

var win = function (score){
for (var i = 0; i < wins.length; i++){
if ((wins[i] & score) == wins[i]){
}
}
return false;
};

var set = function(){
if (this.firstChild.nodeValue !== EMPTY){
return;
}
this.firstChild.nodeValue = turn;
moves += 1;
score[turn] += this.indicator;
if (win(score[turn])){
alert(turn + "wins!");
startNewGame();
}
else if (moves === 36){
alert("Beemo\u2019s game!");
startNewGame();
}
else {
turn = turn === 'X' ? 'O' : 'X';
}
};

onload = function(){

var indicator = 1;
for (var i = 0; i < 6; i++){
for (var j = 0; j < 6; j++){
var cell = document.getElementById("cell" + i + j);
cell.indicator = indicator;
cell.onclick = set;
cell.appendChild(document.createTextNode(''));
squares.push(cell);
indicator += indicator;
}
}
startNewGame();
};

这是 HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>ULTIMATE TIC TAC TOE</title>
<script src="javascript.js"></script>
<style type="text/css">

h1{
text-align: center;
}

table{
border: outset 1px rgb(200, 200, 200)
}

td{
width: 50px;
height: 50px;
vertical-align: middle;
border: inset 1px rgb(200,200,200)
}

tr{
text-align: center;
}
</style>
</head>

<body>
<h1>Tic Tac Toe</h1>

<table align="center">

<tr>
<td id cell="cell00"></td>
<td id cell="cell01"></td>
<td id cell="cell02"></td>
<td id cell="cell03"></td>
<td id cell="cell04"></td>
<td id cell="cell05"></td>
</tr>

<tr>
<td id cell="cell10"></td>
<td id cell="cell11"></td>
<td id cell="cell12"></td>
<td id cell="cell13"></td>
<td id cell="cell14"></td>
<td id cell="cell15"></td>
</tr>

<tr>
<td id cell="cell20"></td>
<td id cell="cell21"></td>
<td id cell="cell22"></td>
<td id cell="cell23"></td>
<td id cell="cell24"></td>
<td id cell="cell25"></td>
</tr>

<tr>
<td id cell="cell30"></td>
<td id cell="cell31"></td>
<td id cell="cell32"></td>
<td id cell="cell33"></td>
<td id cell="cell34"></td>
<td id cell="cell35"></td>
</tr>

<tr>
<td id cell="cell40"></td>
<td id cell="cell41"></td>
<td id cell="cell42"></td>
<td id cell="cell43"></td>
<td id cell="cell44"></td>
<td id cell="cell45"></td>
</tr>

<tr>
<td id cell="cell50"></td>
<td id cell="cell51"></td>
<td id cell="cell52"></td>
<td id cell="cell53"></td>
<td id cell="cell54"></td>
<td id cell="cell55"></td>
</tr>

</table>

</body>
</html>

最佳答案

无法找到您要查找的单元格,因为它们的所有 id属性为空,因此 document.getElementById("cell" + i + j)什么也不返回。更改为<td id="cellxx">你会没事的。

然后你可能会发现 HTML 元素没有属性 indicator ;考虑使用 data-属性:cell.setAttribute('data-indicator', indicator) 。您还应该修改您的 set()方法来读取该属性。

关于javascript - 井字棋 javascript 中的指示器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43692690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com