javascript - 如何将箭头函数转换为 if/else 语句?
问题描述
我的切换菜单遇到了一个小问题。汉堡动画效果很好,单击链接后,它会将您带到我页面的该部分,并删除我的 CSS 帮助程序类“锁屏” - 这隐藏了我的溢出,因此您无法在切换菜单上滚动。但是,如果您想查看菜单,请在不单击菜单项的情况下关闭它 - “锁屏”类仍然适用。我有点 JavaScript 新手,如果关闭菜单后没有单击链接,我是否需要将事件侦听器添加到 if/else 语句中添加新变量/函数以启用滚动?
const navToggle = document.querySelector(".nav-toggle");
const navLinks = document.querySelectorAll(".nav__link");
navToggle.addEventListener("click", () => {
document.body.classList.toggle("nav-open");
document.body.classList.add("lockscreen");
});
navLinks.forEach((link) => {
link.addEventListener("click", () => {
document.body.classList.remove("nav-open");
document.body.classList.remove("lockscreen");
});
});
解决方案
您可以在主体上添加一个事件侦听器,以便菜单外的任何点击都将删除“锁屏”,或者更复杂的方法是在侦听器函数中使用 if/else 来检查当前 event.target = == '一些元素'
const navToggle = document.querySelector(".nav-toggle");
const navLinks = document.querySelectorAll(".nav__link");
navToggle.addEventListener("click", () => {
document.body.classList.toggle("nav-open");
document.body.classList.add("lockscreen");
});
navLinks.forEach((link) => {
link.addEventListener("click", () => {
document.body.classList.remove("nav-open");
document.body.classList.remove("lockscreen");
});
});
document.body.addEventListener("click", () => {
document.body.classList.remove("lockscreen");
})
小心冒泡!在此处阅读有关传播、捕获和冒泡的更多信息
推荐阅读
- list - SilkTest 中的每个测试如何遍历列表?
- java - JavaFX TimeAxis(实时图表)
- javascript - Javascript水平滚动功能未被按钮调用
- r - 合并数据框并根据条件创建列
- javascript - 如何编辑 Amcharts X 轴?
- mysql - 我如何在 MySql Where 子句中使用仅在列不为空时才适用的可选参数?
- batch-file - 批处理文件:将文本行复制到多个文件
- fortran - 如何制作具有 i 行数的文件
- sql-server - SQL Server 表中的第二个计数器
- symfony - 来自具有左连接的对象属性的 DQL 访问 ID