function listoff(){
   var o=document.getElementById("article_list");
   var h=parseInt(obj.style.height);
   h-=3;
   if (h < 0) h = 0; //<<<<<<<<<<防止h为负值
   o.style.height=h+"px"; //<<<<<<<<<<<这里为负值则会出现'参数无效'的异常
   var stop=setTimeout("listoff()",10);
   if (h <= 0){
       clearTimeout(stop);
       removeNode(o);
   }
}

解决方案 »

  1.   

    <!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" />
    <script type="text/javascript">
    <!--
    window.onload=function(){
       obj=document.getElementById("article_list");
       obj.style.height=parseInt(obj.offsetHeight)+"px";
       o=document.getElementById("article");
       o.onclick=listoff;
    }
    function listoff(){
       var o=document.getElementById("article_list");
       var h=parseInt(obj.style.height);
       h>=3 ? h-=3 : h =0; //改动后的当h为负值的时候报错   o.style.height=h+"px";
       var stop=setTimeout("listoff()",10);
       if (h <= 0){
           clearTimeout(stop);
           //removeNode(o);  //改动后的,这里如果removeNode后 id="article_list"的元素将不存在, 再点击会报错的
       }
    }function removeNode(obj){
       var pnt=obj.parentNode;
       pnt.removeChild(obj);
    }
    -->
    </script>   
    </head>
    <body>
       <a href="#" id="article"><h2>list</h2></a>
       <div id="article_list" style="overflow:hidden;">
           <ul>
               <li><a href="#">list1</a></li>
               <li><a href="#">list2</a></li>
               <li><a href="#">list3</a></li>
               <li><a href="#">list4</a></li>
           </ul>
       </div>
    </body>
    </html>