После удаление динамического элемента HTML блокируется взаимодействие со всей страницой
В HTML динамически добавляется элемент, которы ложится поверх всего содержимого сайта. После закрытия этого элемента(окна) он удаляется из HTML, больше не отображается, но взаимодействовать с сайтом не получается, то есть ссылки, кнопки при наведении на них курсора меняют свои стили, но нажатия на них не обрабатываются.
userIcon.addEventListener('click', () => {
burgerAnimate();
document.body.innerHTML += authPanel;
document.querySelector('.btn-close').addEventListener('click', () => {
var element = document.querySelector('.auth-panel');
element.parentNode.removeChild(element);
});
authWithGoogle();
});
Элемент с классом '.btn-close' является дочерним от authPanel
Ответы (1 шт):
Автор решения: Leonid
→ Ссылка
document.body.innerHTML += authPanel;
Эквивалентно по смыслу следующему коду:
let html = document.body.innerHTML;
html = html + authPanel;
document.body.innerHTML = ''; // Здесь все связанные с элементами события теряются
document.body.innerHTML = html; // Здесь добавляется новая разметка, которая преобразуется в DOM, CSS новое дерево благополучно принимает, а JS - нет!
То есть, body полностью меняет всё содержимое, а потому работает только событие, которое определяется после такой замены:
document.querySelector('.btn-close').addEventListener('click', () => {});
Вывод: лучше используйте body.append() или body.insertAdjacentHTML()