问答详情
源自:4-1 JS多物体动画

为什么把速度放在外面就不行呢?每次每个对象startmove方法调用时应该会重新获取速度值才对晒

function startmove(obj,itarget){

clearInterval(obj.timer);

var speed=(itarget-obj.offsetWidth)/5;

speed=speed>0?Math.ceil(speed):Math.floor(speed);

obj.timer=setInterval(function(){

if(obj.offsetWidth==itarget){

clearInterval(obj.timer);

}

else{ 

obj.style.width=obj.offsetWidth+speed+'px';

}

},30)



提问者:善良阿呆 2016-08-10 20:25

个回答

  • 大块吃肉188
    2016-08-31 10:18:53

    要放在定时器的函数里面setInterval(function(){ speed部分  },30),定时器是每隔30ms执行一次function(){}函数。如果你把speed部分放在定时器要调用的函数之外,那么只在触发onmouseover的时候计算speed一次,以后每次定时器内部函数被调用的时候不会再计算speed,所以还是不行,这样讲不知道你明白了么

  • 一只钱端攻城狮
    2016-08-10 21:22:15

    你的obj和itarget是在函数里面定义的,speed放到外面肯定不行啊,而且js是脚本语言,按顺序执行