Как поменять ход в крестики-нолики на JS

Рейтинг: 0Ответов: 2Опубликовано: 18.01.2023

Я новичок в JS, пришло время написать мини-проект. Но не могу понять, почему мой код не работает. Я хочу, чтоб на четном ходе появлялись крестики, а на нечетном - нолики (я так думала решить), но в итоге при таком коде у меня в ячейках проставляются лишь крестики, а нолики игнорируются. Что я делаю не так?

const cells = document.querySelectorAll('.game-field_cell'); 

for (let i = 0; i < cells.length; i++) {
    cells[i].addEventListener('click', changeTurns, {once: true});
} // навесила событие на все выбранные ячейки

let step = 0;
function changeTurns () {
   if (step % 2 === 0) {
   this.innerHTML = 'X';
  } else {
   this.innerHTML = 'O';
  } 
} // хотела написать функцию, которая будет менять ход крестиков и ноликов, но в итоге в ячейках выводятся только крестики

Ответы

▲ 0Принят

Вам надо увеличивать счетчик при каждом вызове функции

let step = 0;
function changeTurns () {
  if (step % 2 === 0) {
    this.innerHTML = 'X';
  } else {
    this.innerHTML = 'O';
  } 
  step++; // Увеличиваем счетчик
}

Так же можно сократить функцию

function changeTurns () {
  this.innerHTML = step++ % 2 === 0 ? 'X' : 'O';
}
▲ 0

Вы нигде не прибавляете значение step и оно у вас всегда равно нулю