<style> 
  .picCss{filter:Alpha(Opacity:50)} 
  .textCss{background:highlight;color:#ffffff} 
</style> <span onclick="csshs(this);"> <table width="60"> <tr> <td align="center"> <img src="images/templetArticle.gif"> </td> </tr> <tr> <td> <span>政治 </span> </td> </tr> </table> </span> <span onclick="csshs(this);"> <table width="60"> <tr> <td align="center"> <img src="images/templetArticle.gif"> </td> </tr> <tr> <td> <span>经济 </span> </td> </tr> </table> </span> <span onclick="csshs(this);"> <table width="60"> <tr> <td align="center"> <img src="images/templetArticle.gif"> </td> </tr> <tr> <td> <span>文化 </span> </td> </tr> </table> </span> 
<script> 
function SetCss(arr,cls)
{
  for(var i=0;i<arr.length;i++)arr[i].className=cls;
}
function $s(obj,tagName){return obj.getElementsByTagName(tagName);}
function csshs(obj)
{
  SetCss($s(obj,"img"),"picCss");
  SetCss($s(obj,"span"),"textCss");
  var TempObj=obj;
  while(TempObj=TempObj.previousSibling)
  {
    SetCss($s(TempObj,"img"),"");
    SetCss($s(TempObj,"ps,span"),"");
  }
  TempObj=obj;
  while(TempObj=TempObj.nextSibling)
  {
    SetCss($s(TempObj,"img"),"");
    SetCss($s(TempObj,"span"),"");
  }
}
</script> 

解决方案 »

  1.   

    更正下这个,标签搞错
    /* while(TempObj=TempObj.previousSibling)
      {
        SetCss($s(TempObj,"img"),"");
        SetCss($s(TempObj,"ps,span"),"");
      }*/
    //====>
      while(TempObj=TempObj.previousSibling)
      {
        SetCss($s(TempObj,"img"));
        SetCss($s(TempObj,"span"));
      }
      

  2.   


    你写的有这么一个小小的问题:选择其他的元素时,之前选择过的元素的 css 没有恢复原始状态