关于 声明变量var timer =null 的位置问题

来源:2-2 JS透明度动画

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  这是什么原因?  必须得放在函数外边声明吗?谢谢!


写回答 关注

1回答

  • 精慕门8128098
    2015-12-24 14:53:01

    将timer变量放在了startMove方法里面,相当于每点击一次按钮,就会执行一次startMove方法,生成了一个闭包,因此创建了一个局部timer,每一个闭包当中的timer并不会共享,所以当第二次或以上调用startMove时并不会关闭timer。

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113923 学习 · 1443 问题

查看课程

相似问题