@Huntgold

Почему событие onclick отрабатывает один раз?

При нажатии на button скрипт отрабатывает. При повторном нажатии скрипт не срабатывает.

let stock = document.querySelectorAll('.photo-details')[0].innerHTML;

  document.querySelectorAll('.desc')[0].onclick = () => {
    if (document.querySelectorAll('.desc')[0].classList.contains("active")){
      document.querySelectorAll('.desc')[0].classList.remove("active");
      document.querySelectorAll('.photo-details')[0].style.height = "400px";
      document.querySelectorAll('.photo-details')[0].style.overflow = "none";
      document.querySelectorAll('.photo-details')[0].innerHTML = stock;
    } else {
    document.querySelectorAll('.desc')[0].classList.add("active");
    document.querySelectorAll('.photo-details')[0].style.height = "550px";
    document.querySelectorAll('.photo-details')[0].style.overflow = "auto";
    document.querySelectorAll('.photo-details')[0].innerHTML += 'Work';}
    }
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Срабатывает только раз потому, что в обработчике заменяется innerHTML. При этом теряются все слушатели событий: новая разметка, всё новое — надо заново вешать обработчики. Либо слушать события выше.

p.s. где-то плачет-рыдает принцип DRY (Don't Repeat Yourself — Не Повторяй Себя). Все куски кода, что повторяются — в переменную / константу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы