I百川
2015-04-22 14:56
function stateMove(iTarget){
var oDiv=document.getElementById('div1');
var timer=null;
var speed=0;
if(oDiv.offsetLeft>iTarget){
speed=-10;
}else{
speed=10;
}
clearInterval(timer);
timer=setInterval(function(){
if(oDiv.offsetLeft==iTarget){
clearInterval(timer);
}else{
oDiv.style.left=oDiv.offsetLeft+speed+'px';
}
},30);
}代码中 声明var timer = null 必须放在stateMove() 函数之外吗? 放在如上代码在函数内部声明会出现bug 这是什么原因? 必须得放在函数外边声明吗?谢谢!
将timer变量放在了startMove方法里面,相当于每点击一次按钮,就会执行一次startMove方法,生成了一个闭包,因此创建了一个局部timer,每一个闭包当中的timer并不会共享,所以当第二次或以上调用startMove时并不会关闭timer。
JS动画效果
113910 学习 · 1502 问题
相似问题