扫码关注官方订阅号
匀速动画
这是一个完整的幻灯js代码 原生js写的 但是有个问题是鼠标每次移动到左右按钮上时就会抽风,乱动。 查遍百度不知如何解决,求指教!!!!!
认证高级PHP讲师
动画没清除
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中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
动画没清除
改成这样
楼主,你确定你代码能动?我拷过去怎么没有效果?左右键按了没反应,你是想问这个?
主要问题是setInterval定时器没有清除,你把setInterval返回的id绑定在了startMover函数的局部变量中。正确的做法是把定时器返回的id绑定在全局变量上,比如你传入的DOM节点上
在startMover里面你定义的timer是一个新的变量,你每次都去清除是他。
太长不看,但是没听过js冒泡?
是冒泡排序吗?
问题都问不好,您还是去百度问吧。
js冒泡和dom事件冒泡不是一个东西