问答详情
源自:2-1 JS速度动画

clearInterval无效?

把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>



提问者:kkk4 2016-06-21 01:53

个回答

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


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

    2、timer=setInterval().

  • 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