利用JavaScript indexOf匹配URL实现导航栏当前栏目高亮

作者:页面旅途时间:2026-10-22 09:56:38浏览:476

本文介绍如何使用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 包含关键字,则判定为当前连接并修改其样式,以此实现当前栏目高亮显示。此技巧对提升用户体验有益,但需注意细节,例如博客外链点击时是否高亮,此处仅提示可能存在的问题。

作者最新文章