javascript - 不知道是不是dom事件冒泡的问题,求指教!!!
PHP中文网
PHP中文网 2017-04-11 11:00:19
[JavaScript讨论组]




匀速动画



   
  • image
  • image
  • image
  • image
  • image

这是一个完整的幻灯js代码 原生js写的 但是有个问题是鼠标每次移动到左右按钮上时就会抽风,乱动。 查遍百度不知如何解决,求指教!!!!!

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(5)
伊谢尔伦

动画没清除

    function startMover(el,itarget){
       clearInterval(el.timer);  

       var op = el;
       el.timer = setInterval(function(){  
          var speed = 0;  
          if(op.offsetLeft > itarget){  
             speed = -5;  
          }else{  
             speed = 5;  
          }  
     
          if(op.offsetLeft == itarget){ 
             clearInterval( el.timer);
          }else{  
             op.style.left = op.offsetLeft+speed+'px';
          }
       },20);        
     }

改成这样

黄舟

楼主,你确定你代码能动?我拷过去怎么没有效果?左右键按了没反应,你是想问这个?

大家讲道理

主要问题是setInterval定时器没有清除,你把setInterval返回的id绑定在了startMover函数的局部变量中。正确的做法是把定时器返回的id绑定在全局变量上,比如你传入的DOM节点上

 function startMover(el,itarget){
   clearInterval(el.timer); 
   el.timer = null; 
   var op = el;
   el.timer = setInterval(function(){  
      var speed = 0;  
      if(op.offsetLeft > itarget){  
         speed = -5;  
      }else{  
         speed = 5;  
      }  
      if(op.offsetLeft == itarget){ 
         clearInterval(el.timer);
      }else{  
         op.style.left = op.offsetLeft+speed+'px';
      }
   },20);        
 }
天蓬老师

在startMover里面你定义的timer是一个新的变量,你每次都去清除是他。

大家讲道理

太长不看,但是没听过js冒泡?
是冒泡排序吗?

问题都问不好,您还是去百度问吧。
js冒泡和dom事件冒泡不是一个东西

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号