注册 登录
编程论坛 JavaScript论坛

[求助]有关clearInterval的问题

sonyyuna 发布于 2010-07-22 19:00, 544 次点击
我想让一个层在2秒钟内从高度为0开始恢复到原始高度,写了以下代码.可是该代码运行到setTimeout时失败,提示t没有定义,这是怎么一回事啊?该怎么修改这段代码?
function box()
{
    var a=document.getElementsByTagName("div")[0];
    var oldHeight=getStyle(a,"height");           //getStyle是一个用来获取样式的函数
    a.style.height="0px";
    var b=0;
    function change()
    {
        b+=parseInt(oldHeight)/20;
        a.style.height=b+"px";
    }
    var t=setInterval(change,100);
    setTimeout("clearInterval(t)",2000);
}
2 回复
#2
gupiao1752010-07-23 01:27
因为T已经成了BOX函数里的私有变量了。只能函数内部用,外部无法调用,因此2秒后就提示:setTimeout("clearInterval(t)",2000);这个T没有定义!
给你个例子参考下,放外头!
程序代码:
<div id="div" style="width:200px;height:100px;background:red;">3333</div>

<script>

    var a=document.getElementById("div");
               //getStyle是一个用来获取样式的函数
    a.style.height=0;
    var b=0;

 function change()
    {
        b+=20;
        a.style.height=parseInt(b)+"px";
    }
    var t=setInterval(change,1000);
    setTimeout("clearInterval(t)",5000);//为了效果这里改为5秒
</script>
#3
sonyyuna2010-07-23 07:50
原来是这样,谢谢版主大哥的帮助
1