Модальные окна, на чистом JS
пытался реализовать модальные окна на сайте их 3 , проблем лишь в том , что после клика на кнопку закрытия, повторное открытие какого-либо модального окна сопровождается с ошибкой: Uncaught TypeError: Cannot read property 'classList' of null
document.addEventListener('DOMContentLoaded', function () {
var modalButtons = document.querySelectorAll('.js-open-modal'),
overlay = document.querySelector('.js-overlay-modal'),
closeButtons = document.querySelectorAll('.js-modal-close');
modalButtons.forEach(function (item) {
item.addEventListener('click', function (e) {
e.preventDefault();
var modalId = this.getAttribute('data-modal'),
modalElem = document.querySelector('.modal[data-modal="' + modalId + '"]');
modalElem.classList.add('active');
overlay.classList.add('active');
});
});
closeButtons.forEach(function (item) {
item.addEventListener('click', function (e) {
var parentModal = this.closest('.modal');
parentModal.classList.remove('active');
overlay.classList.remove('active');
parentModal.remove('#vid');
overlay.remove('#vid');
});
});
document.body.addEventListener('keyup', function (e) {
var key = e.keyCode;
if (key == 27) {
document.querySelector('.modal.active').classList.remove('active');
document.querySelector('.overlay').classList.remove('active');
document.querySelector('#vid').remove(this);
document.querySelector('#vid').remove(this);
}
}, true);
overlay.addEventListener('click', function () {
document.querySelector('.modal.active').classList.remove('active');
this.classList.remove('active');
});
});
<div class="modal" data-modal="3">
<svg class="modal__cross js-modal-close" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M23.954 21.03l-9.184-9.095 9.092-9.174-2.832-2.807-9.09 9.179-9.176-9.088-2.81 2.81 9.186 9.105-9.095 9.184 2.81 2.81 9.112-9.192 9.18 9.1z"/></svg>
<form class="form" method="POST" action="">
<label>Телефон</label>
<input type="tel" placeholder="введите телефон">
<label>
<input type="checkbox"> Я согласен с обработкой личных данных
</label>
<button class="request__main button">
Перезвонить
</button>
</form>
</div>
пример верстки модального окна
<a href="#" class="js-open-modal" data-modal="3">
<div class="header__call">
заказать звонок
</div>
</a>
пример реализации кнопки вызова модалки
не могу понять в чем проблема
Ответы (1 шт):
Автор решения: yavis
→ Ссылка
Cоздайте одну общую функцию для показа и скрытия модальных окон, и ниже потом вызывайте эти функции с аргументами каждого модального окна.