크롬 출력 콘솔에서 위의 오류를 표시하는 슬라이드 아웃 기능이 있습니다. 그것은 내 JS 기능에 라인 document.body.removeChild(document.getElementById("overlay04"));
사이트. 어떻게 이것을 피할 수 있습니까? 감사.'노드'슬라이드 아웃 오류 'removeChild'를 실행하지 못했습니다.
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");
}
});
전체 코드 test_site_link. 당신은 '복원'기능을 호출 할 때 여기
사용 디버거에서 널 체크를 추가하고 당신이 볼'restore'입니다 첫 번째 클릭시 마우스 업 수신기에서 호출됩니다. 골치 거리가 이상합니다. 오버레이가 추가되어 기본 버튼에 더 이상 클릭 이벤트가 수신되지 않습니다. 올바르게 수행하는 방법은 여러 가지가 있습니다. 예를 들어 오버레이를 영구적으로 만들고 표시/숨기고 메뉴에 애니메이션을 적용 할 클릭 이벤트를 첨부합니다. – wOxxOm
좋은 아이디어 –