对jQuery来说是新手。不知道为什么这个代码不能证明胜利..。
我有两个点击函数,一个用于X,另一个用于O。
然后,我有一个checkBoard函数,它通过一个名为board的数组检查一个名为wins的数组中的一个匹配的wins组合。
表在代码的基础上堆叠。我首先粘贴了jquery,因为我相信这就是问题所在,因为我可以用值填充方格,但它并没有显示出胜利。
以下是代码:
<script>
var count = 0
$('td').on('click', function (){
if(count % 2 === 0){
$(this).text("X");
} else {
$(this).text("O");
}
count++
checkBoard();
});
function checkBoard(){
var wins = [[$("#0"),$("#1"),$("#2")], [$("#3"),$("#4"),$("#5")], [$("#6"),$("#7"),$("#8")], [$("#0"),$("#3"),$("#6")], [$("#1"),$("#4"),$("#7")], [$("#2"),$("#5"),$("#8")], [$("#0"),$("#4"),$("#8")], [$("#6"),$("#4"),$("#2")]]
var board = [[$("#0"), $("#1"), $("#2")], [$("#3"),$("#4"),$("#5")], [$("#6"), $("#7"), $("#8")]]
for(w in this.wins){
var pattern = this.wins[w];
var checkPattern = this.board[pattern[0]] + this.board[pattern[1]] + this.board[pattern[2]];
if (checkPattern = ["X","X","X"]) {
return "X Wins!";
console.log("X");
} else if (checkPattern = ["O","O","O"]) {
return "O Wins!";
console.log("O");
}
}
}
</script>
<table>
<tr>
<td id="0"></td>
<td id="1"></td>
<td id="2"></td>
</tr>
<tr>
<td id="3"></td>
<td id="4"></td>
<td id="5"></td>
</tr>
<tr>
<td id="6"></td>
<td id="7"></td>
<td id="8"></td>
</tr>
</table>
td {
width: 100px;
height: 100px;
border: 2px solid black;
font-size: 5em;
text-align: center;
}发布于 2015-05-04 14:48:19
看起来问题就在你的for循环中。您甚至不需要板数组,只需检查wins数组中每个jQuery对象的值,看看是否有win。
当只使用1等于符号时,您正在为if语句中的数组分配checkPattern。此外,使用jQuery选择器$(ID)返回一个jQuery对象,而不是标记中的内容。
试一试:
for (var i=0; i<wins.length; i++) {
var w = wins[i];
var checkXwin = w[0].text() == "X" && w[1].text() == "X" && w[2].text() == "X";
var checkOwin = w[0].text() == "O" && w[1].text() == "O" && w[2].text() == "O";
if (checkXwin) {
console.log("X");
return "X Wins!";
} else if (checkOwin) {
console.log("O");
return "O Wins!";
}
}编辑
如果我使用的是普通的for循环,而不是增强的循环,我就能够让它工作。
https://stackoverflow.com/questions/30032818
复制相似问题