Не пропускает, при этом количество шагов в .moves-counter span не меняется...

const movesCount = document.querySelector('.moves-counter span');
const modal = document.querySelector('.congratulation-message span')
const tryAgainButton = document.querySelector('#try-again');
console.log(modal);

var opened = []
var matched = 0
var moves = 0

function shuffle (_arr) {
      const arr = [..._arr];
          for (let i = arr.length - 1; i > 0; i--) {
        let j = Math.floor(Math.random() * (i + 1));
        [arr[i], arr[j]] = [arr[j], arr[i]];
      }
    return arr;
}

function init() {
      const cards = document.querySelectorAll('.card');
      const field = document.querySelector('.field');

      var shuffled = []
      matched = 0
      moves = 0

      cards.forEach((card) => {
              card.addEventListener('click', (e) => {
                  card.classList.add('opened')
              })
            })
      shuffled = shuffle([...cards])
        for(let i = 0; i < shuffled.length; i++){
        field.append(shuffled[i])
    }
      addMove()
      modal.style.display = 'none'
}

function addMove() {
      moves+ 1;
      movesCount.innerHTML = `${moves}`
}

function showModal() {
      modal.innerHTML = `${moves}`;
      modal.style.display = 'block'
}

tryAgainButton.addEventListener('click', (e) => {
      init()
})


init()

    robertw8 добавь условие задачи (этапа) которую проходишь

    • robertw8 ответили на это сообщение.

      robertw8 похоже что ты неправильно выбираешь modal.

      Вижу в твоем коде const modal = document.querySelector('.congratulation-message span'), но разве это .modal о котором говорит третий пункт проверки?

        document.querySelector('.modal').style.display = 'block';
      • robertw8 ответили на это сообщение.
        • Изменено

        Coderslang_Master

        Да, этап пропустило, но вот только осталась еще одна проблема - внутренний moves-counter span все еще не меняется 🙁

        Отрезок кода с функцией которая должна менять текст moves-counter span:

        function addMove() {
              moves += 1; // если +=, то начальное значение 1 и не меняется, если просто +, то начальное значение 0 и не меняется
              movesCount.innerHTML = `${moves}`
        }

          robertw8 попробуй перенести селектор внутрь addMove

          function addMove() {
            moves++;
            document.querySelector('.moves-counter span').innerHTML = moves;
          }
          • robertw8 ответили на это сообщение.

            robertw8 присылай обновленный код. Весь файл текстом.

            • robertw8 ответили на это сообщение.

              Coderslang_Master

              const modal = document.querySelector('.congratulation-message span')
              const tryAgainButton = document.querySelector('#try-again');
              console.log(modal);
              
              var opened = []
              var matched = 0
              var moves = 0
              
              function shuffle (_arr) {
                    const arr = [..._arr];
                        for (let i = arr.length - 1; i > 0; i--) {
                      let j = Math.floor(Math.random() * (i + 1));
                      [arr[i], arr[j]] = [arr[j], arr[i]];
                    }
                  return arr;
              }
              
              function init() {
                    const cards = document.querySelectorAll('.card');
                    const field = document.querySelector('.field');
              
                    var shuffled = []
                    matched = 0
                    moves = 0
              
                    cards.forEach((card) => {
                            card.addEventListener('click', (e) => {
                                card.classList.add('opened')
                            })
                          })
                    shuffled = shuffle([...cards])
                      for(let i = 0; i < shuffled.length; i++){
                      field.append(shuffled[i])
                  }
                    addMove()
                    document.querySelector('.modal').style.display = 'none'
              }
              
              function addMove() {
                    moves++;
                    document.querySelector('.moves-counter span').innerHTML = moves;
              }
              
              function showModal() {
                    modal.innerHTML = `${moves}`;
                    document.querySelector('.modal').style.display = "block"
              }
              
              tryAgainButton.addEventListener('click', (e) => {
                    init()
              })
              
              
              init()

                robertw8 ошибка в init. Попробуешь найти самостоятельно?

                • robertw8 ответили на это сообщение.

                  robertw8 убирай все лишнее.

                  обрати внимание на этот кусок кода:

                  cards.forEach((card) => {
                                card.addEventListener('click', (e) => {
                                    card.classList.add('opened')
                                })
                              })
                        shuffled = shuffle([...cards])
                          for(let i = 0; i < shuffled.length; i++){
                          field.append(shuffled[i])
                      }
                        addMove()
                        document.querySelector('.modal').style.display = 'none'
                  • robertw8 ответили на это сообщение.

                    Coderslang_Master

                    Все, что пришло в голову - перенес

                    shuffled = shuffle([...cards])
                            for(let i = 0; i < shuffled.length; i++){
                            field.append(shuffled[i])

                    внутрь ивент лисенера, addMove() внутрь цикла, убрал массив opened.

                    Но теперь при нажатии на любую карточку подобная картина:


                    Весь код:

                    const modal = document.querySelector('.congratulation-message span')
                    const tryAgainButton = document.querySelector('#try-again');
                    
                    var matched = 0
                    var moves = 0
                    
                    function shuffle (_arr) {
                          const arr = [..._arr];
                              for (let i = arr.length - 1; i > 0; i--) {
                            let j = Math.floor(Math.random() * (i + 1));
                            [arr[i], arr[j]] = [arr[j], arr[i]];
                          }
                        return arr;
                    }
                    
                    function init() {
                          const cards = document.querySelectorAll('.card');
                          const field = document.querySelector('.field');
                    
                          var shuffled = []
                          matched = 0
                          moves = 0
                    
                          cards.forEach((card) => {
                                  card.addEventListener('click', (e) => {
                                      card.classList.add('opened')
                    
                    
                                      shuffled = shuffle([...cards])
                                            for(let i = 0; i < shuffled.length; i++){
                                            field.append(shuffled[i])
                                                addMove()
                                }
                          })
                    })
                          document.querySelector('.modal').style.display = 'none'
                    }
                    
                    function addMove() {
                          moves++;
                          document.querySelector('.moves-counter span').innerHTML = moves;
                    }
                    
                    function showModal() {
                          modal.innerHTML = `${moves}`;
                          document.querySelector('.modal').style.display = "block"
                    }
                    
                    tryAgainButton.addEventListener('click', (e) => {
                          init()
                    })
                    
                    init()
                      16 дней спустя

                      robertw8 привет, пардон что долго. Уже решил задачу или еще нужна помощь?

                      Написать ответ...