点击li标签变色,求Js代码 本帖最后由 zhaofeng0420 于 2013-12-27 18:16:46 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 document.getElementById("mu").onclick = function(e){ e = e || window.event; var target = e.srcElement || e.target, tagName = target.tagName.toLowerCase(), allLi = document.getElementById("mu").getElementsByTagName("li"); for(var i=0,len=allLi.length;i<len;i++){ if(target == allLi[i]){ allLi[i].style.background = "red"; }else{ allLi[i].style.background = "blue"; } } };把这段,写在页面的最下面 谢谢,您的这段代码很好用,但我改了一下之后,li:hover就失效了,不知道什么原因?document.getElementById("mu").onclick = function(e){ e = e || window.event; var target = e.srcElement || e.target, tagName = target.tagName.toLowerCase(), allLi = document.getElementById("mu").getElementsByTagName("li"); for(var i=0,len=allLi.length;i<len;i++){ if(target == allLi[i]){ allLi[i].style.background = "#FFA11F"; allLi[i].style.color = "#0978D1"; }else{ allLi[i].style.background = "#0978D1"; allLi[i].style.color = "#FFF"; } } }; <style> .liSelected{ background-color:#FFA11F; color:#0978D1; } .liNoSelected{ background-color:#0978D1; color:#FFF; } .mu li:hover{ color:#0978D1; } </style> <script> document.getElementById("mu").onclick = function(e){ e = e || window.event; var target = e.srcElement || e.target, tagName = target.tagName.toLowerCase(), allLi = document.getElementById("mu").getElementsByTagName("li"); for(var i=0,len=allLi.length;i<len;i++){ if(target == allLi[i]){ allLi[i].className = "liSelected"; }else{ allLi[i].className = "liNoSelected"; } } }; </script>因为上面的那种写法,样式会直接被写在标签内,这样的样式有最高的优先级,所以你在css文件中,添加的hover对应的class,是会被标签内的样式覆盖,把你要的样式都写成class,添加class就没有问题了。这样li你最好都只用一个class,用多个的话,就得做其他处理了。 现在比刚才好一点了,还有一点问题,就是点击前hover是OK的,点击后就失效了 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=7" /> <title>关于本站|联系我们</title> <style type="text/css"> .mu .liSelected{background-color:#FFA11F;color:#0978D1} .mu li{background-color:#0978D1;color:#FFF} .mu li:hover{color:red} </style></head><body><div class="wrap"> <div class="main"> <div class="logo aLogo"><a class="logo_a" title="设为首页"></a></div> <div class="bdn">当前位置: <a href="./">首页</a> >> 关于本站 </div> <div class="lmu"> <div class="idt">关于本站</div> <div class="mu" id="mu"> <ul> <li>关于本站</li> <li>诚聘英才</li> <li>联系我们</li> <li>使用声明</li> </ul> </div> </div> </div> <script type="text/javascript"> var mu = document.getElementById("mu"); var li = mu.getElementsByTagName("li"); mu.onclick = function(e){ e = e || window.event; var target = e.srcElement || e.target; for(var i=0,len=li.length;i<len;i++){ li[i].className = target == li[i] ? "liSelected":""; } }; </script></div></body></html> 怎么通过JavaScript给页面里的IP加上链接 字符串分割的问题 如何获得Ext中ComboBox选中项(急) 求这样一个代码? 全屏问题 div层的问题急 想写一个让用户选择颜色的网页,就像Windows 编程中的调色版,请问怎么做? 为什么我在这个论坛看不到每行流言的最后几个字?头疼死了 我曾看到一个网站用JS把YEAH。NET二级域名的弹出窗口给干失效了,哪位大侠研究过这个东西怎么弄? 前端接收后端传过来的数据不完整 URL中如何写入js?? 你们肯定不知道这段代码为什么能执行
e = e || window.event;
var target = e.srcElement || e.target,
tagName = target.tagName.toLowerCase(),
allLi = document.getElementById("mu").getElementsByTagName("li");
for(var i=0,len=allLi.length;i<len;i++){
if(target == allLi[i]){
allLi[i].style.background = "red";
}else{
allLi[i].style.background = "blue";
}
}
};把这段,写在页面的最下面
document.getElementById("mu").onclick = function(e){
e = e || window.event;
var target = e.srcElement || e.target,
tagName = target.tagName.toLowerCase(),
allLi = document.getElementById("mu").getElementsByTagName("li");
for(var i=0,len=allLi.length;i<len;i++){
if(target == allLi[i]){
allLi[i].style.background = "#FFA11F";
allLi[i].style.color = "#0978D1";
}else{
allLi[i].style.background = "#0978D1";
allLi[i].style.color = "#FFF";
}
}
};
.liSelected{
background-color:#FFA11F;
color:#0978D1;
}
.liNoSelected{
background-color:#0978D1;
color:#FFF;
}
.mu li:hover{
color:#0978D1;
}
</style>
<script>
document.getElementById("mu").onclick = function(e){
e = e || window.event;
var target = e.srcElement || e.target,
tagName = target.tagName.toLowerCase(),
allLi = document.getElementById("mu").getElementsByTagName("li");
for(var i=0,len=allLi.length;i<len;i++){
if(target == allLi[i]){
allLi[i].className = "liSelected";
}else{
allLi[i].className = "liNoSelected";
}
}
};
</script>因为上面的那种写法,样式会直接被写在标签内,这样的样式有最高的优先级,所以你在css文件中,添加的hover对应的class,是会被标签内的样式覆盖,把你要的样式都写成class,添加class就没有问题了。这样li你最好都只用一个class,用多个的话,就得做其他处理了。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<title>关于本站|联系我们</title>
<style type="text/css">
.mu .liSelected{background-color:#FFA11F;color:#0978D1}
.mu li{background-color:#0978D1;color:#FFF}
.mu li:hover{color:red}
</style>
</head>
<body>
<div class="wrap">
<div class="main">
<div class="logo aLogo"><a class="logo_a" title="设为首页"></a></div>
<div class="bdn">当前位置:
<a href="./">首页</a> >> 关于本站
</div>
<div class="lmu">
<div class="idt">关于本站</div>
<div class="mu" id="mu">
<ul>
<li>关于本站</li>
<li>诚聘英才</li>
<li>联系我们</li>
<li>使用声明</li>
</ul>
</div>
</div>
</div>
<script type="text/javascript">
var mu = document.getElementById("mu");
var li = mu.getElementsByTagName("li");
mu.onclick = function(e){
e = e || window.event;
var target = e.srcElement || e.target;
for(var i=0,len=li.length;i<len;i++){
li[i].className = target == li[i] ? "liSelected":"";
}
};
</script>
</div>
</body>
</html>