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动画效果
113923 学习 · 1443 问题
相似问题