解决动画函数点击按钮后可能出现的Bug---动画越来越快的问题(方案)

本文介绍了一种前端JavaScript动画中常见的问题,即点击按钮后元素移动速度越来越快。原因在于未清除旧的定时器,导致动画叠加。解决方案是在每次点击按钮启动动画前,先清除已存在的定时器,确保只有一个定时器在运行,从而避免元素移动速度异常加快。
摘要由CSDN通过智能技术生成

摘要:封装了一个动画函数,里面是添加定时器让元素实现移动的动画,当点击按钮 button 触发事件后,元素开始移动,再点击按钮,元素移动加快,不断点击按钮发现元素移动速度会越来越快,解决这个Bug 问题的方法是先清除定时器,只保留当前的一个定时器,这样就不会出现不断点击按钮使元素不断变快移动了。

未清除定时器时的代码:

<body>
    <button>点击夏雨荷才走</button>
    <span>夏雨荷</span>
<script>
function animate(obj, target) {
            // 当我们不断点击按钮,这个元素速度会越来越快,因为开启了太多的定时器
            obj.timer = setInterval(function () {
            if (obj.offsetLeft == target) {
            // 停止动画 本质是停止定时器
               clearInterval(obj.timer);
            obj.style.left = obj.offsetLeft + 1 + 'px';
            }, 30);
}
var div = document.querySelector('div');
var span = document.querySelector(&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值