2016-10-05 5 views
0

크롬 출력 콘솔에서 위의 오류를 표시하는 슬라이드 아웃 기능이 있습니다. 그것은 내 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. 당신은 '복원'기능을 호출 할 때 여기

+0

사용 디버거에서 널 체크를 추가하고 당신이 볼'restore'입니다 첫 번째 클릭시 마우스 업 수신기에서 호출됩니다. 골치 거리가 이상합니다. 오버레이가 추가되어 기본 버튼에 더 이상 클릭 이벤트가 수신되지 않습니다. 올바르게 수행하는 방법은 여러 가지가 있습니다. 예를 들어 오버레이를 영구적으로 만들고 표시/숨기고 메뉴에 애니메이션을 적용 할 클릭 이벤트를 첨부합니다. – wOxxOm

+0

좋은 아이디어 –

답변

1

문제 없음 'overlay04'ID를 가진 DIV 요소의 기능 '복원'후 실행 'expandOverlay'기능에서 만든

document.getElementById("overlay04"

)입니다 null 이 왜 점점 형식 오류가

솔루션 : 은 '복원'기능

function restore() { 
    var $overlay04 = document.getElementById("overlay04"); 
    if ($overlay04) { 
    document.body.removeChild($overlay04); 
    } 
} 
+0

좋은, 더 이상 오류를 보자, 그럼 링크를 여러 번 클릭하여 열어 토글해야합니다. –

관련 문제