Как удалить динамически созданный блок?

Здравствуйте
Пытаюсь создать всплывающий блок с изображением -
Fiddle

Сейчас получаю ошибку Cannot read property 'querySelector' of null
Понимаю, что при загрузке страницы данного блока нет, и соот. получаю ошибку

Подскажите, как удалить динамически созданный блок. Т.е при клике на кнопку Close - чтобы блок закрывался (удалялся)
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Не разбираясь во всех ваших хитросплетениях, давайте просто отдебажим ваш код:

  1. const modal = new Modal(document.querySelector('.modal'));

    Это то, что выполнится первым. В конструктор передается результат поиска элемента. Если элемент не найден, то querySelector выдаст null. Очевидно. Здесь нет проверок на null, но будем надеяться, что в теле конструктора они точно есть. Ну или хотя бы есть полная уверенность, что элемент с таким классом обязательно есть на странице.
  2. Входим в конструктор:
    this.modalElement = modalElement;
    // .......
    this.modalElement.querySelector(..................);

    И здесь происходит ошибка. Странно, проверки на null нигде нет. И судя по тексту ошибки, вы пытаетесь вызвать метод querySelector переменной modalElement, которая имеет значение null. Следовательно, в самом начале элемента с классом modal не было на странице.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MalkovVladimir73
@MalkovVladimir73
Fullstack (node + vue.js)
В фанке create сохраняйте элемент модалки в переменную (желательно приватную, например _modal), в close() обращайтесь к этой переменной и либо делайте display = 'none', либо удаляйте сам элемент.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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