制作Tab菜单栏(利用原生JavaScript)
需求: 1.点击哪个a链接,让其对应的li标签添加类(.current)
需求: 2.鼠标经过哪个a链接,其对应li标签的背景色变灰(.hover)
需求1利用排他思想,此段代码已写好;需求2如果继续使用排他思想,怎么让所点击的a链接排除在外?也就是如何获取被点击的a链接所对应的位置,鼠标经过它不变色,两者不冲突?或者还有更好的方法?
代码段:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#list li {
list-style-type: none;
width: 80px;
height: 30px;
line-height: 30px;
background-color:beige;
text-align: center;
float: left;
margin-left: 5px;
}
#list li.current {
background-color: burlywood;
}
#list li.hover {
background-color: #CCC;
}
#list li a {
text-decoration: none;
}
</style>
<script>
window.onload = function () {
//需求:点击哪个a链接,让其对应的li标签添加类(.current)
//需求:鼠标经过哪个a链接,其对应li标签的背景色变灰(.hover)
var ul = document.getElementById("list");
var liArr = ul.children;
var a = ul.getElementsByTagName("a");
for(var i=0;i<liArr.length;i++){
a[i].onclick = function () {
//排他思想
for(var j=0;j<liArr.length;j++){
liArr[j].className = "";
}
this.parentNode.className = "current";
}
}
}
</script>
</head>
<body>
<div id="menu">
<ul id="list">
<li class="current"><a href="javascript:void(0)">首页</a></li>
<li><a href="javascript:void(0)">播客</a></li>
<li><a href="javascript:void(0)">博客</a></li>
<li><a href="javascript:void(0)">相册</a></li>
<li><a href="javascript:void(0)">关于</a></li>
<li><a href="javascript:void(0)">帮助</a></li>
</ul>
</div>
</body>
</html>
需求1 排他思想 效率比较差。不管li有没有类别都操作一遍。如果记住有类名的li,只删除这个li的类别是不是效率更高?
加强版:事件委托比for循环效率更高
需求2 鼠标经过请使用css实现,样式如下