日期:2014-05-16  浏览次数:20382 次

js控制div的高
我想做个动画效果,用js控制div的高
,让它由大变小 在由小变大,可是一直都不成功.
不知道问题出在哪里,急死了
JScript code

function ChildHide(childName){
    var child = document.getElementById(childName);
    var tempheight = child.offsetHeight;

    for (var i = tempheight; i >= 0; i--) {
        child.style.height = i + "px";
    }
    for (var j = 0; j <= tempheight; j--) {
        child.style.height = j + "px";
    }
}



------解决方案--------------------
tempheight 也就数百像素,for循环在几毫秒内就结束了,所以看不到效果。常规的动画都是有计时器的,设定时间间隔来执行大小、位置的修改动作,以实现动画效果。
------解决方案--------------------
探讨

引用:
应该是j++..怎么是j--?!

敲错了,代码是j++

------解决方案--------------------
jquery 是一个 JS的框架;JS能做到的,Jquery都能做到。 
$("#block").animate({height: "200px"}, 1000 );
#block :DOM元素的ID
1000 : 效果的播放速度单位是(毫秒)
{ } : 变化对象,填写CSS属性的最终变化值。 如上{height: "200px"} 即是 对象的高度最终变为高度200px
要使用JQUERY 请先引用 jquery框架
------解决方案--------------------
一步一步的弹出来看错在哪
------解决方案--------------------
用这个吧,你那个结构就实不现,代码已调试

function ChildHide(childName){
var child = document.getElementById(childName);
var tempheight = child.offsetHeight;
//alert(child+','+tempheight);

subheight(child,tempheight,function(){alert("success");});
}
function subheight(obj,value,callBack)//参数分别为html元素对象,初始高度,回调函数
{
if(value<0) //递归出口条件
{
callBack();
return;
}
obj.style.height=value;
setTimeout(function(){ subheight(obj,value-10,callBack);},50);
}