Я новичок в javascript и пытался применить на практике то, что я знаю, создав игру ti c -ta c -toe.
Я создал сетку в HTML и я пытаюсь записать ход игрока, изменив блок, по которому щелкнули, на X или O, добавив к нему имя класса. Я также сохраняю позицию кликаемого блока и в конце проверяю, привел ли последний ход к выигрышу или нет, используя функцию winCheck .
Ниже приведена часть кода, который вызывает ошибку:
const square = document.querySelectorAll('.square')
// playing : x starts
let player = 'x'
square.forEach(block=>{
block.addEventListener('click', play(player))
})
function play(player) {
if(!search(this.id,occupied)){
occupied.push(this.id)
if(player==='x'){
this.classList.add('x')
player = 'o'
x.push(this.id)
}else if(player==='o'){
this.classList.add('o')
player = 'x'
o.push(this.id)
}
winCheck()
}
}
ошибка возникла:
TypeError: this.classList is undefined
Когда я сделал console.log (this) внутри Функция воспроизведения Я увидел, что она ссылается на полное окно (документ или DOM или правильное слово, которое я не знаю, потому что я новичок в разработке front-end )
Прошу прощения, если в вопросе не хватает деталей, трудно сформулировать вопрос на топи c Вы не знаете