2017-10-01 4 views
0

아무에게도 코드가 정상적으로 작동하지만 두 번째로 addEventListener를 사용하면 "display 없음 "함수 후addEventListener "if"다음에 코드를 실행하지만 "else"다음에 코드를 실행하지 않음 (onclick 표시)

} else 

나는 거기에 많은 코드와 질문 거기 사람들이 onclick 기능에 대해 물어 알고 있습니다. 하지만 addEventListener를 사용하기 때문에 코드를 다시 작성해야하는 이유에 대해서는 알지 못했습니다.

이렇게하면 메뉴가 열리지 만 다시 닫지는 않지만 addEventListener를 제거하면됩니다.

document.getElementById("menu-item-11109").addEventListener("click", myFunction); 

function myFunction() { 
    var x = document.getElementById('closemenu'); 
    if (x.style.display === 'none') { 
    x.style.display = 'block'; 
    } else { 
    x.style.display = 'none'; 
    } 
} 

HTML은

<li onclick="myFunction()" id="menu-item-11109"> 
<a>Opskrifter</a> 
<ul id="closemenu"> 
<li> 
<a href="https://kvalitet-extensions.dk/category/mad/">Mad og drikke</a> 
</li> 
</ul> 
+0

코드로 인한 문제에 대해 질문 할 때 사람들이 문제를 재현하는 데 사용할 수있는 기능적 예제를 제공하면 훨씬 더 좋은 대답을 얻을 수 있습니다. 참조 : [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve). 감사! –

+0

다시 닫을 수 있습니까? 다니엘이 말했듯이()을 제거한 후에는 할 수 없기 때문에 –

답변

0
<li onclick="myFunction()" id="menu-item-11109"> 

당신은 onclick을 발생한다 함수에 대한 참조를 전달해야합니다. 대신에 직접 myfunction을 호출합니다.

해결 방법 : 다음

<li onclick="myFunction" id="menu-item-11109"> 

내가 onclick 이벤트로하여 myFunction에 대한 참조를 전달하고있다.