日期:2014-05-17  浏览次数:20628 次

js和css控制鼠标略过和点击后的样式<转帖>
临时写了一个  可能不是最好的  但你说的功能基本实现了



<script language="javascript">
document.onreadystatechange=function()     //当页面状态改变时执行函数
{
if(document.readyState == "complete")         //当页面加载状态为完成时执行条件内容

{
  var li = document.getElementsByTagName("li");  //获取页面所有li节点
  for(var i=0;i<li.length;i++)                                     //循环li节点
  {
   li[i].onclick=function(){                                         //为循环的li节点绑定 onclick事件
    for(var j=0;j<li.length;j++)
    {
     li[j].style.backgroundColor="#FFF";                  //将所有li背景颜色修改
     this.style.backgroundColor="#C0F";                //将当前点击的li背景颜色修改
    }
   }
  }
}
}
</script>
<ul>
<li>測試1</li>
<li>測試2</li>

<li>測試3</li>
<li>測試4</li>

<li>測試5</li>
<li>測試6</li>
</ul>

刚没注意你还要滑过的效果  以下是全部效果 其实思路都是一样 只是绑定的事件不一样而已



////////////////////////////////////////////////////////////////////////////////////



<script language="javascript">
document.onreadystatechange=function()  //当页面状态改变时执行函数
{
if(document.readyState == "complete") //当页面加载状态为完全结束时进入
{
  var li = document.getElementsByTagName("li");
  for(var i=0;i<li.length;i++)
  {
   li[i].onclick=function(){                        //为循环的li节点绑定 onclick事件 也就是点击事件
    for(var j=0;j<li.length;j++)
    {
     li[j].style.backgroundColor="#FFF";   
     this.style.backgroundColor="red";
    }
   }
  
   li[i].onmousemove=function(){      //为循环的li节点绑定onmousemove事件也就是鼠标移上事件
    for(var j=0;j<li.length;j++)
    {
     if(this.style.backgroundColor != "red")  //这里就判断改li标签是否被点击 如果点击就不改变颜色
     {     
      this.style.backgroundColor="#C0F";
     }
    }
   }
  
   li[i].onmouseout=function(){       ///为循环的li节点绑定onmouseout事件也就是鼠标移走事件
    for(var j=0;j<li.length;j++)
    {
     if(this.style.backgroundColor != "red")       //这里就判断改li标签是否被点击 如果点击就不改变颜色
     {
      this.style.backgroundColor="#FFF";
     }
    }
   }
  }
}
}
</script>
<ul>
<li>測試1</li>
<li>測試2</li>

<li>測試3</li>