网上看到Javascript + CSS 做的下拉菜单,其中javascript 代码如下:<script type="text/javascript">
function menuFix()
{
  var sfEls = document.getElementById("nav").getElementsByTagName("li");
  for (var i=0; i <sfEls.length; i++)
  {
    sfEls[i].onmouseover=function()
    {
      this.className+=(this.className.length>0? " ": "") + "sfhover";
    }
    sfEls[i].onMouseDown=function()
    {
      this.className+=(this.className.length>0? " ": "") + "sfhover";
    }
    sfEls[i].onMouseUp=function()
    {
      this.className+=(this.className.length>0? " ": "") + "sfhover";
    }
    sfEls[i].onmouseout=function()
    {
      this.className=this.className.replace(new RegExp("( ? |^)sfhover\\b"),
      "");
    }
  }
}
window.onload=menuFix;
</script>本人对javascript 一知半解,但试着将上述代码简化为:function menuFix()
{
  var sfEls = document.getElementById("nav").getElementsByTagName("li");
  for (var i=0; i <sfEls.length; i++)
  {
    sfEls[i].onmouseover=function()
    {
this.className="sfhover";
    }
    sfEls[i].onmouseout=function()
    {
this.className="";    }
  }
}一样没问题啊,为何要把简单的东西搞复杂呢? 盼高手解答疑惑。网上完整的网页代码见这里:http://qsrock.iteye.com/blog/231192

解决方案 »

  1.   

    你这样改可以 只不过原先的多了个鼠标的onmouseup和onmousedown事件罢了
      

  2.   

    首先 class 可能包含多个name
    但是切换样式的时候 只牵涉到其中一个 name 并不想影响其他的name
    所以你看看他的代码 classname的处理方式另外 起初那段 代码 控制的事件比较多 对应的需求也多 变化也大只不过 涉及到变化的代码 他全空着没有写 所以看起来和你的一样这是一段模板代码 用到的时候 那需要的事件填下就可以了 不需要实现所有事件