@MashutaKlencheva

Как вызвать проверку на ширину экрана при клике?

Нужно динамически отслеживать ширину экрана, чтобы на определенных точках при клике на элемент скрывались некоторые другие. Есть заготовка, в которой я пытаюсь выполнить динамическую проверку на ширину экрана и вывести сообщение в консоль.
window.addEventListener('DOMContentLoaded', function() {

  const openSearch = document.querySelector('#open-search');

  const inputSearch = document.querySelector('#input-search');

  const closeSearch = document.querySelector('#close-search');

//эта функция вставлена ради проверки  и она выдает ошибку Uncaught ReferenceError: documentElement is not defined
    at tada

 window.addEventListener("resize", tada);

 function tada() {
   const viW = Math.max(documentElement.clientWidth, window.innerWidth || 0);
   if (viW <= 1023) console.log('tada')
 };

 tada();

  openSearch.addEventListener('click', function() {
    openSearch.setAttribute('type', 'submit');
    inputSearch.classList.remove('input-collapsed');
    closeSearch.classList.remove('search-form__close');
  });

  closeSearch.addEventListener('click', function() {
    inputSearch.classList.add('input-collapsed');
    closeSearch.classList.add('search-form__close');
  });
});


Вопрос - почему не срабатывает такая функция, и как ее грамотно поместить в событие при клике?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@goshaLoonny
Вы ни в одном обработчике не используете this, но при этом используете function, а не стрелочные функции. Но проблема не в этом, просто озвучил.
window.addEventListener('DOMContentLoaded', () => {
  const openSearch = document.querySelector('#open-search');
  const inputSearch = document.querySelector('#input-search');
  const closeSearch = document.querySelector('#close-search');

  window.addEventListener('resize', () => {
    const viW = Math.max(
      document.documentElement.clientWidth,
      window.innerWidth || 0
    );

    if (viW <= 1023) console.log('tada')
  });
  window.dispatchEvent(new Event('resize')); // Это эмулирует событие

  openSearch.addEventListener('click', () => {
    openSearch.setAttribute('type', 'submit');
    inputSearch.classList.remove('input-collapsed');
    closeSearch.classList.remove('search-form__close');
  });

  closeSearch.addEventListener('click', () => {
    inputSearch.classList.add('input-collapsed');
    closeSearch.classList.add('search-form__close');
  });
})

Ошибка была в том что вы обращались к переменной documentElement, а нужно было document.documentElement
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы