利用JavaScript indexOf匹配URL实现导航栏当前栏目高亮
本文介绍如何使用JavaScript的indexOf方法判断当前页面URL与导航链接的关系,从而为当前栏目添加高亮样式。通过遍历导航元素并比较href属性与document.location.href,实现自动识别当前选中项,提升用户体验。
当前栏目高亮显示原理
当前栏目高亮显示
通过JavaScript判断当前浏览器地址栏中的URL,并与导航栏中各个链接的href属性进行比对,核心在于使用indexOf函数来检测字符串首次出现的位置。若indexOf返回值不为-1,说明当前URL包含该链接的关键部分,此时为该链接所在的元素添加特定的class属性,从而实现视觉上的高亮效果。
HTML结构示例
HTML结构部分
<div id="nav">
<ul>
<li><a href="//www.jb51.net/html/list/index_127.htm" title="资讯中心"><span>资讯中心</span></a></li>
<li><a href="//www.jb51.net/html/list/index_1.htm" title="网络编程"><span>网络编程</span></a></li>
<li><a href="//www.jb51.net/html/list/index_104.htm" title="数据库"><span>数据库</span></a></li>
<li><a href="//www.jb51.net/html/list/index_96.htm" title="脚本专栏"><span>脚本专栏</span></a></li>
<li><a href="//www.jb51.net/html/list/index_7.htm" title="实用技巧"><span>实用技巧</span></a></li>
<li><a href="//www.jb51.net/html/list/index_84.htm" title="软件编程"><span>软件编程</span></a></li>
<li><a href="//www.jb51.net/html/list/index_8.htm" title="网页制作"><span>网页制作</span></a></li>
<li><a href="//www.jb51.net/html/list/index_86.htm" title="操作系统"><span>操作系统</span></a></li>
<li><a href="//www.jb51.net/html/list/index_11.htm" title="经典网摘"><span>经典网摘</span></a></li>
<li><a href="//www.jb51.net/html/list/index_27.htm" title="网站技巧"><span>网站技巧</span></a></li>
<li><a href="//www.jb51.net/html/list/index_99.htm" title="免费资源"><span>免费资源</span></a></li>
<li><a href="//www.jb51.net/html/list/index_54.htm" title="关于我们"><span>关于我们</span></a></li>
<li><a href="//www.jb51.net/search.asp" title="文章搜索"><span>文章搜索</span></a></li>
</ul>
</div>
JavaScript实现逻辑
JavaScript代码实现部分
var myNav = document.getElementById("nav").getElementsByTagName("a");
for(var i=0;i<myNav.length;i++)
{
var links = myNav[i].getAttribute("href");
//alert(links)
//alert(myNav[i]);
var myURL = document.location.href;
if(myURL.indexOf(links) != -1)
{
myNav[i].className="d";
}
}
详细实现步骤与注意事项
关于当前栏目高亮显示的原理,若上述说明不够清晰,此处进行详细拆解。当用户点击导航栏中的某个链接时,例如点击了带有href="//www.jb51.net/html/list/index_127.htm"且title为“资讯中心”的<a>标签,浏览器会加载对应的页面。
点击链接后,浏览器的地址栏会发生变化,显示当前页面的完整URL。
例如://www.jb51.net/html/list/index_127.htm
在JavaScript中,可以通过访问document.location.href属性来获取当前页面的完整URL字符串。
该属性返回的值即为当前页面的完整地址,如//www.jb51.net/html/list/index_127.htm。
接下来,我们需要遍历页面上所有的导航链接,获取每个链接的href属性值。遍历所有链接的代码逻辑如下:
var myNav = document.getElementById("nav").getElementsByTagName("a");
for(var i=0;i<myNav.length;i++)
{
var links = myNav[i].getAttribute("href");
}
利用 indexOf 函数比对页面所有链接,若 //www.jb51.net/html/list/index_127.htm 包含关键字,则判定为当前连接并修改其样式,以此实现当前栏目高亮显示。此技巧对提升用户体验有益,但需注意细节,例如博客外链点击时是否高亮,此处仅提示可能存在的问题。
JS监听滚动事件:回到顶部按钮的显示与隐藏逻辑
2026-11-05 16:19:37
JavaScript怎么读写LocalStorage与SessionStorage
2026-11-05 15:40:11
anime.js 与 GSAP 对比:轻量级项目该怎么选择动画库
2026-11-05 11:24:55
flv.js 与 hls.js 在直播场景下的选型对比
2026-11-05 08:18:52
JavaScript能做什么?前端开发中的作用与应用场景解析
2026-11-04 23:17:54
