删除JavaScript中的事件单击

删除JavaScript中的事件单击,javascript,onclick,dom-events,onclicklistener,Javascript,Onclick,Dom Events,Onclicklistener,我有两个功能来打开和关闭sidenav。我添加了一项功能,当您单击导航外部时,将触发函数closeNav()。Sidenav已关闭,但事件单击在整个文档中仍处于活动状态,因此我必须删除EventListener。我试了很多次,但都没有成功。有什么办法吗 JS 因为它不是同一个函数。 试试这个: var sideNav = document.getElementById('rizkSidenav'); var myFunction = function(evt) { targ

我有两个功能来打开和关闭
sidenav
。我添加了一项功能,当您单击导航外部时,将触发函数
closeNav()
。Sidenav已关闭,但事件单击在整个
文档中仍处于活动状态,因此我必须
删除EventListener
。我试了很多次,但都没有成功。有什么办法吗

JS


因为它不是同一个函数。 试试这个:

var sideNav = document.getElementById('rizkSidenav');

var myFunction = function(evt) {  
        targetElement = evt.target;  // clicked element
        do {
            if (targetElement === sideNav) {
            // This is a click inside. Do nothing, just return.
                return;
            }
            // Go up the DOM
            targetElement = targetElement.parentNode;
        } while (targetElement);
        // This is a click outside.
        closeNav();
    }

function openNav() {
    sideNav.style.width = "83%";

    // Close nav when clicked outside 
    document.addEventListener("click", myFunction);
}

function closeNav() {
    sideNav.style.width = "0";
    //????? (event listener should be removed)
    document.removeEventListener("click", myFunction);
}
var sideNav = document.getElementById('rizkSidenav');

var myFunction = function(evt) {  
        targetElement = evt.target;  // clicked element
        do {
            if (targetElement === sideNav) {
            // This is a click inside. Do nothing, just return.
                return;
            }
            // Go up the DOM
            targetElement = targetElement.parentNode;
        } while (targetElement);
        // This is a click outside.
        closeNav();
    }

function openNav() {
    sideNav.style.width = "83%";

    // Close nav when clicked outside 
    document.addEventListener("click", myFunction);
}

function closeNav() {
    sideNav.style.width = "0";
    //????? (event listener should be removed)
    document.removeEventListener("click", myFunction);
}