JS结构
** <script>
//当有多个点击下拉菜单获得对应的数据信息时,有可能点击其它的页面数据,显示还是这个页面的数据信息。
// 声明一个变量,获取URL参数,切割成数组
let page = location.pathname.split("/")
// 打印的结果
console.log(page);//["", "we.html"]
// 检索指定的location对象,loaction.search指的是获取URL后"?"后面的属性
if (location.search !== "") { //判断是否为空
//切割后返回一个新对象
let tar = location.search.slice(1);
console.log(location.search)//?fir
console.log(tar);//fir
// 给要显示父元素的子元素加一个fir类名,也可直接给父元素加一个fir类名(加fir类名是为了和url中"?"后的属性匹配)
$("." + tar).parent(".content").show(); //让显示的内容.content显示出来。
//找到menu下的a标签的href属性 a标签的父元素,添加active样式,同级的兄弟元素,移除active样式。
//$(".menu a[href='" + page[page.length - 1] + "?" + tar + "']").parent("li").addClass("active").siblings("li").removeClass("active")
// page是一个数组["", "we.html"],所以 page.length=2 等效于["", "we.html"][2-1],下标从0开始,所以值为we.html.
}//后面也可直接加else
//当上面条件不成立时,让内容主动显示,相当于默认显示的数据。
//:visible选取当前可见的元素,长度为0时,
if ($(".content:visible").length === 0) {
//给第一个content添加指定的属性。
$(".content")[0].setAttribute("style", "display:block")
}
//给a标签添加点击事件
$(".menu a").on("click", function (event) {
//阻止点击a标签时链接被打开。
event.preventDefault();
//获取href的属性,从?切割成数组(href=we.html?fir) 取数tar数组中的第一个值 取page数组中的最后一个值,we.html
let tar = $(this).attr("href").split("?"), tarPage = tar[0], currPage = page[page.length - 1]
if (tarPage !== currPage) { //判断两个值是否相等
location.href = $(this).attr("href") //不等,就跳到那个页面去
} else {
//否则添加前进后退功能,并不会刷新页面,导致页面重构。 tar=["","we.html"]
history.replaceState({}, "", "?" + tar[tar.length - 1])
console.log(tar);
//a标签的父元素,添加或移除样式
// $(this).parent("li").addClass("active").siblings("li").removeClass("active");
//类名的父元素content显示或隐藏。
$("." + tar[tar.length - 1]).parent(".content").show().siblings(".content").hide()
}
})
</script>**
HTML结构
<ul>
<li><a href="javascript:;"><span> 首 页</span></a></li>
<li><a href="index.html"><span>公司介绍</span><