关于定时器的问题

<script type="text/javascript">

window.onload=function(){
    var aDiv =document.getElementsByTagName('div');
    for(var i=0;i<aDiv.length;i++){
        aDiv[i].timer=null;    //给每一个div加上一个定时器    第5行
        aDiv[i].onmouseover=function(){
            move(this,400);
        }
        aDiv[i].onmouseout=function(){
            move(this,100);
        }
    }
}
// var timer=null;
function move(obj,iTarget){
    clearInterval(obj.timer);
    obj.timer=setInterval(function(){
        var speed =(iTarget-obj.offsetWidth)/6;
        speed=speed>0?Math.ceil(speed):Math.floor(speed);
         if(obj.offsetWidth==iTarget){
             clearInterval(obj.timer);
         }
         else{
             obj.style.width=obj.offsetWidth+speed+'px';
         }
    },30)
}

想请教一下,为什么第5行的代码给删掉还能执行了?

阅读 2k
2 个回答

这行代码并不是增加计时器,setInterval 才是,而 timer 只是记录了定时器返回的值,方便以后调用 clearInterval 清除这个计时器。

不是给div加个timer就是加个定时器 本质来说你就是添加了个对象属性而已 你在move函数中给timer指向了计时器才是执行的关键

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题