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

求js动画效果里面的一些bug解决方法!!!

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>mouseOverOut</title>
  <style type="text/css">
    *{margin:0;padding:0;}
    #div1{
      height:200px;
      width:200px;
      background:red;
      position:relative;
      left:-200px;
      top:0;
    }
    #div2{
      height:50px;
      width:20px;
      background:blue;
      position:absolute;
      top:75px;
      left:200px;
    }
  </style>
</head>
<body>
<script type="text/javascript">
window.onload=function(){
  var oDiv=document.getElementById('div1');
  oDiv.onmouseover=function(){
    startMove(0);
  }
  oDiv.onmouseout=function(){
    startMove(-200);
  }
}
var timer=null;
var speed=0;
function startMove(iTarget){
  clearInterval(timer);
  var oDiv=document.getElementById('div1');
  speed=(iTarget-oDiv.offsetLeft)/20;
  speed=speed>0?Math.ceil(speed):Math.floor(speed);
  timer=setInterval(function(){
    if(oDiv.offsetLeft==iTarget){
      clearInterval(timer);
    }else{
        oDiv.style.left=oDiv.offsetLeft+speed+'px';
    }
  },20);
}
</script>
<div id="div1">
<div id="div2">分享</div>
</div>
</body>
</html>

以上我是敲得代码,几乎和老师的一样
但是,我测试过程有一个bug,就是在蓝色分享不断地将鼠标移进移出就会出现一些bug,大神们可以测试一下,帮我解答一下。谢谢啦

正在回答

4 回答

  timer=setInterval(function(){
    if(oDiv.offsetLeft==iTarget){
      clearInterval(timer);
    }
    //增加两个else if语句
else if(iTarget<0&&iTarget-oDiv.offsetLeft>0){
      oDiv.style.left=iTarget+'px';
    }else if(iTarget==0&&iTarget-oDiv.offsetLeft<0){
      oDiv.style.left=iTarget+'px';
    }
    else{
        oDiv.style.left=oDiv.offsetLeft+speed+'px';
    }
  },20);

问题的起因是由于反复的进行鼠标移入移出,导致oDiv.offsetLeft+speed的值超过iTarget这一边界,从而不能清除定时器。


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

。。。搞笑,,,,逗我?我初学者。。。

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

为什么我feel不到bug?

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

guaguaerhao 提问者

你用我的代码试一下?
2016-09-12 回复 有任何疑惑可以回复我~
#2

qq_GreenOrRed_0 回复 guaguaerhao 提问者

试了一下 好搞笑哈哈哈你的代码
2016-09-12 回复 有任何疑惑可以回复我~

测试过了,果然可以了,谢谢你啦

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

举报

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

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

进入课程

求js动画效果里面的一些bug解决方法!!!

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