Javascript 当十进制值为0时,计数动画被卡住

Javascript 当十进制值为0时,计数动画被卡住,javascript,Javascript,我从另一篇文章中得到了这个动画功能 function animateValue(id, start, end, duration) { var obj = document.getElementById(id); var range = end - start; var minTimer = 50; var stepTime = Math.abs(duration / range); stepTime = Math.max(stepTime, minTi

我从另一篇文章中得到了这个动画功能

function animateValue(id, start, end, duration) {
    var obj = document.getElementById(id);
    var range = end - start;

    var minTimer = 50;
    var stepTime = Math.abs(duration / range);
    stepTime = Math.max(stepTime, minTimer);

    var startTime = new Date().getTime();
    var endTime = startTime + duration;
    var timer;

    function run() {
        var now = new Date().getTime();
        var remaining = Math.max((endTime - now) / duration, 0);
        var value = end - (remaining * range);

        obj.innerHTML = (value).toLocaleString('en', { maximumFractionDigits: 16 });
        if (value == end) clearInterval(timer);
    }
    var timer = setInterval(run, stepTime);
    run();
}
太棒了!我每秒钟更新一次数值,直到数值下降,出现小数点为止。在这一点上计数错误,我认为这是因为时间不完美。我该如何解决这个问题?我似乎不明白


您可以在此处查看错误:

我不理解问题所在。它在开始值和结束值之间进行计数,然后停止计数?请发布一个完全复制这个问题的例子“直到值下降”——我不明白你在这里的意思。滴在哪里?下面是什么?是的,我也无法让它“bug out”:@Karl AndréGagnon我很抱歉我应该提供一个示例,您可以在这里查看,您可以将
stepTime
设置为静态变量。