javascript - 无法弄清楚为什么我的变量没有更新
问题描述
我提前道歉,因为我试图保持的一些干净的代码已经变成了一个怪物,我试图弄清楚为什么这不起作用。我正在尝试增加,以便可以在和turnCount
之间切换。我在使用 var 中声明了它,因此它更具全局性,然后我将值传递给它应该在那里增加,不是吗?player1
player2
ticGame
takeTurn
// intializes and starts game
const ticGame = new TicGame();
ticGame.start();
function TicGame(){
// creates and tracks the players
const board = new Board();
const player1 = new Player1(board);
const player2 = new Player2(board);
this.positions = Array.from(document.querySelectorAll(".column"));
this.values=[];
var turnCount=0;
for(let i = 0; i < this.positions.length; i++){
this.values[i]=this.positions[i].innerHTML;
}
this.start = function() {
const config = { childList: true };
const observer = new MutationObserver(() => takeTurn(turnCount));
board.positions.forEach((el) => observer.observe(el, config));
takeTurn(turnCount);
}
function takeTurn(turnCount) {
if (turnCount % 2 === 0)
{
console.log(5);
turnCount++;
console.log(turnCount);
player1.takeTurn();
}
else
{
console.log(6);
player2.takeTurn();
turnCount++;
console.log(turnCount);
}
for(let i = 0; i < ticGame.positions.length; i++){
ticGame.values[i]=ticGame.positions[i].innerHTML;
}
}
//
// let a = document.getElementById('box1').innerHTML;
// console.log(a);
console.log(this.positions);
console.log(this.values);
const winningCombinations = [
[0,1,2],
[3,4,5],
[6,7,8],
[0,4,8],
[2,4,6],
[0,3,6],
[1,4,7],
[2,5,8]
];
console.log(winningCombinations);
}
// had to pop it out from ticGame because apparently i cant keep it in one object :(
function Board() {
this.positions = Array.from(document.querySelectorAll('.column'));
}
function Player1(board){
console.log(1);
this.takeTurn=function(){
board.positions.forEach(el => el.addEventListener('click', handleTurnTaken));
}
}
function Player2(board){
console.log(2);
this.takeTurn=function(){
board.positions.forEach(el => el.addEventListener('click', handleTurnTakenO));
}
}
function handleTurnTaken(event) {
console.log(3);
if(event.target.innerText === 'X' || event.target.innerText === 'O'){
console.log("NAH");
board.positions.forEach(el => el.removeEventListener('click', handleTurnTaken));
}
else{
event.target.innerText = 'X';
board.positions.forEach(el => el.removeEventListener('click', handleTurnTaken,true));
board.positions.forEach(el => el.removeEventListener('click', handleTurnTaken,false));
}
}
// **** me i suck at this
function handleTurnTakenO(event) {
console.log(4);
if(event.target.innerText === 'X' || event.target.innerText === 'O'){
console.log("NAH");
board.positions.forEach(el => el.removeEventListener('click', handleTurnTakenO));
}
else{
event.target.innerText = 'O';
board.positions.forEach(el => el.removeEventListener('click', handleTurnTakenO,true));
board.positions.forEach(el => el.removeEventListener('click', handleTurnTakenO,false));
}
}
任何帮助将非常感激。
解决方案
您缺少“,”和“;” 尤其是在写“turnCount++”的时候
推荐阅读
- python - 如何从 .txt 文件中提取数据并将其存储在 2 个单独的变量中?
- python - Pandas - 将数据集行从每个人更改为每个操作的最简单方法
- continuous-integration - Gitlab runner 删除构建文件夹
- javascript - 在 Pyppeteer (Python Puppeteer) 中从 page.evaluate 将值返回给 python
- java - Eclipse JUnit 视图
- go - 子进程收到只能由父进程处理的 SIGINT,导致子进程突然终止
- html - HTML 响应式照片网格图片大小
- c++ - 如何杀死我在 C++ 中创建的分离线程
- kubernetes - Kubernetes,一个 VPA 可以管理多个 Cronjobs 吗?
- r - 使用 dplyr R 汇总多列