2 chaiwa19800624 chaiwa19800624 于 2015.06.21 17:24 提问

js运动的一个问题,为什么第一个函数不执行

#box{width: 100px;height: 100px;background: red;position: absolute;left: 0;top: 0;}

js======

function act(obj, attr, target, fn){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var cur = parseInt(css(obj, attr));
var speed = (target - cur) / 8;
var stop = true;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
if(target != cur){
stop = false;
}
obj.style[attr] = speed + cur + 'px';
if(stop){
clearInterval(obj.timer);
obj.timer = null;
fn && fn.call(obj);
}
}, 20);
}

var box=document.getElementById('box');
act(box,'top',300);
act(box,'left',300);
为什么我这样调用只执行了第二个函数?

2个回答

bdmh
bdmh   Ds   Rxr 2015.06.21 17:36

先确认是没执行,还是执行了没效果,估计是没效果,没执行不应该

danielinbiti
danielinbiti   Ds   Rxr 2015.06.21 18:14
看代码,函数
function act(obj, attr, target, fn){
clearInterval(obj.timer);//这里clear定时器

 act(box,'top',300);//第一句执行,
act(box,'left',300);//第二句执行后立马就clearInterval(obj.timer);了,所以第一句没效果
Csdn user default icon
上传中...
上传图片
插入图片