clearInterval无效?

来源:2-1 JS速度动画

kkk4

2016-06-21 01:53

把onmouseover换成onclick时,第一个clearInterval(timer)就不能起到作用了,有没有同学遇到相同的情况??

<body>
<div id="container">
	<div id="box"></div>
</div>
<script type="text/javascript">
	window.onload=function(){
		var obox=document.getElementById("box");
		obox.onclick	=function(){
			startmove();
		}
	}

	
	function startmove(){
		var timer=null;
		clearInterval(timer);
		var oc=document.getElementById("container");
		setInterval(function(){
			if (oc.offsetLeft==0) {
				clearInterval(timer);
			}
			else{
				oc.style.left=oc.offsetLeft+1+"px";
			}	
		},30)
	}
</script>
</body>



写回答 关注

3回答

  • 秦月殇
    2016-06-21 11:06:51
    已采纳


    1、var timer=null应该声明在function函数外面。若声明在函数内部,每次调用函数时都会在函数内部声明一个timer变量,且每个timer变量都不相同,所以clearImterval(timer)不起作用。与换成onclick没有关系。

    2、timer=setInterval().

    kkk4

    非常感谢!

    2016-07-07 14:41:21

    共 3 条回复 >

  • kafu123
    2016-07-05 20:44:00

    第18行应该是timer=setInterval(function(){        吧。

  • 害羞长颈鹿
    2016-06-23 17:55:51

    样式上加上 body{margin:0;padding:0;} 

    要不然

    oc.style.left=oc.offsetLeft+1+"px";这语句只会是每次加9

JS动画效果

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

113924 学习 · 1443 问题

查看课程

相似问题