为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JS动画效果
  • 参与学习       113925    人
  • 解答问题       1443    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信