本帖最后由 nickwang888 于 2009-12-10 01:50:51 编辑

解决方案 »

  1.   

    1.把var maxh=30;作为全局变量
    2.两个函数修改如下这样做的目的,每次将展开后的ul的高度最大值记录下来!等隐藏之后,再次展开时,就能进行比对了。定死了最大值,但是高度是实时变化的,所以要不断的更新最大值!function $D1(obj){ 
      var h=obj.offsetHeight; 
      //var maxh=30;
      function dmove(){ 
        h+=20; //设置层展开的速度 
        if(h>=maxh){ 
          obj.style.height=maxh+'px'; 
          clearInterval(iIntervalId); 
        }else{ 
          obj.style.display='block'; 
          obj.style.height=h+'px'; 
        } 
      } 
      iIntervalId=setInterval(dmove,2); 
    } function $D2(obj){ 
      var h=obj.offsetHeight; 
      if(h>maxh)
      {
    maxh=h;
      }
      //var maxh=30;
      function dmove(){ 
        h-=20;//设置层收缩的速度 
        if(h <=0){ 
          obj.style.display='none'; 
          clearInterval(iIntervalId); 
        }else{ 
          obj.style.display='block'; 
          obj.style.height=h+'px'; 
        } 
      } 
      iIntervalId=setInterval(dmove,2); 
      
      

  2.   

    楼主用这段代码function $(element){ 
      return element = document.getElementById(element); 

    怎么不直接用JQuery好了
      

  3.   

    楼主,我能先请教你个问题吗?
    我调试了下,var sb=event.srcElement.parentNode;这个的outterhtml是
    <div id="bt" onclick="$use('contents')">
    而event.srcElement的outterhtml是<img> 那个层,为什么呢,onclick事件明明是在<div>上的,怎么event.srcElement的outterhtml却是<img>
      

  4.   

    还有楼主的这个高度问题,其实可以屏蔽掉,因为楼主只想达到菜单框滑下来的目的,对巴,直接用JQuery的$('div').show(fast)就可以了
      

  5.   

    直接用JQuery
    我对JS不熟悉。。
    能将代码直接粘贴进来看看效果吗
    谢谢啦
    结贴马上给分
    呵呵
      

  6.   


    <script type="text/javascript" src="e:\jquery-1.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $("#aatitle").toggle(function(){
                $("#contents").hide("normal");
            },function(){
                $("#contents").show("normal");
            });
        })
    </script>
      

  7.   

    晕,这里就是全部的代码,html不需要大的改动,你只要把jquery文件放在相关的目录,我这里是放在e:/
    然后加上上面的代码就可以了,