Javascript addEventListener";点击";使用if语句只运行一次

Javascript addEventListener";点击";使用if语句只运行一次,javascript,Javascript,我有一个用于下拉菜单的addEventListener,当我第一次单击它时,菜单就会出现,如果我再次单击,它就会正确地消失。然而,在那之后,如果我再试一次,什么也不会发生。如果我去掉If语句并在函数中使用一个简单的警报,它每次都会工作,但是这个If语句似乎很麻烦 document.getElementById("menu").addEventListener("click",navigation); function navigation() { var navMenu = document.g

我有一个用于下拉菜单的addEventListener,当我第一次单击它时,菜单就会出现,如果我再次单击,它就会正确地消失。然而,在那之后,如果我再试一次,什么也不会发生。如果我去掉If语句并在函数中使用一个简单的警报,它每次都会工作,但是这个If语句似乎很麻烦

document.getElementById("menu").addEventListener("click",navigation);
function navigation() {
var navMenu = document.getElementById("navigation");
var list = document.getElementById("list");
if (navMenu.style.height == 0) {
    navMenu.style.height = "190px";
    list.style.display = "flex";
}
else {
    navMenu.style.height = "0";
    list.style.display = "none";
}
}

我对此不确定,但您是否尝试过使用
=0
而不是
=0'


我希望这有帮助,祝你好运。

我不确定这一点,但你是否尝试过使用
=0
而不是
=0'


我希望这会有所帮助,祝你好运。

在这种情况下,请改变

if(navMenu.style.height==0)

if(navMenu.style.height==“0px”)


它应该能工作。

在这种情况下,改变

if (navMenu.style.height === '0px') {
if(navMenu.style.height==0)

if(navMenu.style.height==“0px”)


它应该可以工作。

元素高度以像素为单位报告,所以像这样更新代码应该可以工作

if (navMenu.style.height === '0px') {

这是一个代码笔

元素高度以像素为单位报告,因此像这样更新代码应该可以

if (navMenu.style.height === '0px') {

这是一个代码笔

在大多数浏览器中,
height
属性的返回值将是“0px”,而不是“0”,因此您的条件无法正确检查该值。它工作正常。感谢您的解释。在大多数浏览器中,
height
属性的返回值将是“0px”,而不是“0”,因此您的条件无法正确检查该值。它工作正常。谢谢你的解释。