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);
}
}
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);
}
}
<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>