addEventListener “click” 只使用 if 语句运行一次

addEventListener "click" only runs once with if statement

本文关键字:运行 一次 语句 if click addEventListener      更新时间:2023-09-26

我有一个下拉菜单的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";
}
}

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

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

这是一个代码笔 http://codepen.io/anon/pen/ZOXAzd

在条件中,更改

if (navMenu.style.height == 0)

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

它应该有效。

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

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