У меня есть функция выдвижения, которая дает мне ошибку выше в хром-консоли. Он размещает строку document.body.removeChild(document.getElementById("overlay04"));
в моей функции JS. Как мне избежать этого? Благодарю. test_site_linkНе удалось выполнить 'removeChild' на ошибке выноса 'Node'
function expandOverlay() {
var overlay = document.createElement("div");
overlay.setAttribute("id", "overlay04");
overlay.setAttribute("class", "overlay04");
document.body.appendChild(overlay);
$(overlay).hide().fadeIn(80);
}
function restore() {
document.body.removeChild(document.getElementById("overlay04"));
}
// create menu variables
var slideoutMenu = $('.slideout-menu');
var slideoutMenuWidth = $('.slideout-menu').width();
$(document).ready(function() {
$('.slideout-menu-toggle').on('click', function(event) {
event.preventDefault();
// toggle open class
slideoutMenu.toggleClass("open");
// slide menu
if (slideoutMenu.hasClass("open")) {
slideoutMenu.animate({
left: "0px"
}, 160);
expandOverlay();
} else {
slideoutMenu.animate({
left: -slideoutMenuWidth
}, 160);
restore();
}
});
});
window.addEventListener('mouseup', function(event) {
var box = document.getElementById('menu_s');
if (event.target != box && event.target.parentNode != box) {
slideoutMenu.animate({
left: -slideoutMenuWidth
}, 160);
restore();
slideoutMenu.toggleClass("open");
}
});
Полный код.
Используйте отладчик, и вы увидите 'restore' является вызывается из прослушивателя мыши при первом щелчке. Ваш алгон странный: наложение добавляется так, что основная кнопка больше не получает никаких событий кликов. Существует несколько способов сделать это правильно. Например, сделайте наложение постоянным и покажите/скройте его, прикрепите к нему событие клика, которое будет анимировать меню. – wOxxOm
хорошая идея давайте посмотрим –