1 回答
TA贡献1829条经验 获得超9个赞
需求1 排他思想 效率比较差。不管li有没有类别都操作一遍。如果记住有类名的li,只删除这个li的类别是不是效率更高?
var ul = document.getElementById("list");
var liArr = ul.querySelectorAll("li");
var index = 0; //设置index记住有类名的li的下标 ,初始为 0
for(var i=0;i<liArr.length;i++){
liArr[i].index = i; // 设置当前点击的li的 下标 等于索引值
liArr[i].onclick = function () {
liArr[index].className = ""; // li被点击时候 移除类名为current的li的 类名
this.className = "current"; // 给当前点击的li添加类名current
index = this.index // li 类名为current的 下标 就变成了 当前点击的li下标
}
}
加强版:事件委托比for循环效率更高
<script>
window.onload = function () {
var oMenu =document.getElementById("#menu");
oMenu.onclick = function (e) {
oCur= oMenu.querySelector(".current");
if(oCur){oCur.className="";}
e = e || window.event;
var tag = e.target || e.srcElement;
if(tag.nodeName.toLocaleLowerCase()=="a"){
tag.parentNode.className = "current"
}
};
}
</script>
需求2 鼠标经过请使用css实现,样式如下
<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,#list li.current:hover {
background-color: burlywood;
}
#list li:hover {
background-color: #CCC;
}
#list li a {
display: block;
text-decoration: none;
}
</style>
添加回答
举报