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

明明和老师的代码是一样的,为什么我的在多次点击的时候还是跑的很快,感觉前面那个清除没有作用

<!DOCTYPE  HTML>

<html >

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>js运动</title>

<style>

*{margin:0px;padding:0px;}

#div1{height:200px;

         width:200px;

background:red;

position:relative;

left:-200px;}

#share{width:50px;

       height50px;

  background:blue;

  position:absolute;

  top:100px;

  left:200px;

  }

</style>

<script>

  window.onload=function(){

  var odiv=document.getElementById("div1");

    odiv.onmouseover=function(){

startMove();

}

  }

  var timer=null;

  function startMove(){

 clearInterval(timer);

 var odiv=document.getElementById("div1");

 setInterval(function(){

 if(odiv.offsetLeft==0){

 clearInterval(timer);

 }

 else{

 odiv.style.left=odiv.offsetLeft+1+"px";

 }

 },30)

 }

</script>

</head>

<body>

  <div id="div1">

  <span id="share">分享</span>

 </div>

</body>

</html>


正在回答

3 回答

timer在这里需要为全局变量,在定时器前面加timer=,注意不能再加var,否则据就近原则,startMove函数中使用的timer就不是函数外部的全局变量了,就无法达到预期的效果~你试试看

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

芥子1204 提问者

非常感谢!
2016-04-07 回复 有任何疑惑可以回复我~
#2

ahao430

我也是这个问题,去掉var好了,感谢
2016-05-09 回复 有任何疑惑可以回复我~

你可以试试将setInterval(function(){

 if(odiv.offsetLeft==0){

改为

timer=setInterval(function(){

 if(odiv.offsetLeft==0){

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

芥子1204 提问者

谢谢~~~阿里阿朵
2016-04-07 回复 有任何疑惑可以回复我~

"clearInterval(timer); " 这句代码下面还有个 " setInterval(function(){...} " 前面没有加 " var timer = "

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

芥子1204 提问者

谢谢~~~
2016-04-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

明明和老师的代码是一样的,为什么我的在多次点击的时候还是跑的很快,感觉前面那个清除没有作用

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