javascript - 如何使用javascript在html中选择菜单项
问题描述
这是我的html代码。浏览时如何保持选择菜单项(链接到另一个页面)?我想用javascript来做。先感谢您。
<ul class="header-menu" id="nav">
<li class="menu-item"><a href="home.html">HOME</a></li>
<li class="menu-item"><a href="news.html">NEWS</a></li>
<li class="menu-item"><a href="tour_dates.html">TOUR DATES</a></li>
<li class="menu-item"><a href="gallery.html">GALLERY</a></li>
<li class="menu-item"><a href="about.html">ABOUT</a></li>
</ul>
解决方案
有多种方法可以达到这种效果。让我们首先声明您有一个“活动”类,您可以在菜单项上使用它来使它们弹出,您将如何应用该类?
首先,我会为所有菜单项分配一个特定的类或 id,以使它们易于在 css(或 javascript)中引用。
假设现在你的情况是这样的:
<ul class="header-menu" id="nav">
<li class="menu-item home-item"><a href="home.html">HOME</a></li>
<li class="menu-item news-item"><a href="news.html">NEWS</a></li>
<li class="menu-item tour-item"><a href="tour_dates.html">TOUR DATES</a></li>
<li class="menu-item gallery-item"><a href="gallery.html">GALLERY</a></li>
<li class="menu-item about-item"><a href="about.html">ABOUT</a></li>
</ul>
现在,使用 javascript,您可以这样做:
// Get the page name
let pathArray = location.pathname.split("/");
let page = pathArray[pathArray.length-1];
// Get all menu items and convert them to an Array
let menuItems = document.querySelectorAll(".header-menu .menu-item");
menuItems = new Array(...menuItems);
let lookFor = "";
// Based on the page, set the variable lookFor as the identifying class
switch (page) {
case "home.html":
lookFor = "home-item";
break;
case "news.html":
lookFor = "news-item";
break;
// ...
}
// Get the element that contains the class
let item = menuItems.filter( (item) => item.classList.contains(lookFor) )[0];
// Set the "active" class on the element
item.classList.add("active");
在这里,您可以查看带有工作代码的代码框。
推荐阅读
- screeps - 当我遍历它时,Screeps Costmatrix 没有显示除 0 之外的任何值
- javascript - s3.getObject 中的回调函数不起作用 - 节点 12.x
- android - 我无法使用 Android 设备在我的网站的任何页面上向下滚动
- android - 如何使用 Room ORM 缓存此响应?
- javascript - 滚轮滚动上的触发事件只有一次js
- java - 将具有动态键名的 java 属性文件映射到 POJO
- reactjs - 根据密钥更改状态
- scala - 如何在 Akka Classic Actor 中记录文件名和行号?
- html - 如何在不使用 JSP 的情况下向 Spring Boot 提交 html 表单?
- python - python有没有办法在列表理解中遍历矩阵