javascript - 使用 jQuery 对每个数字使用相同的时间使数字增长

标签 javascript jquery setinterval

我的目标是执行一个 jQuery 脚本,该脚本将使任何数字在视觉上从零增长到使用 setInterval() 达到其值。

这是我想到的:

$('.grow').each(function() {
        var $el = $(this);
        var max = parseInt($el.text().replace(/\s/g, ''));
        var refresh = 5;
        var start = 0;
        var step = 1;
        var interval = window.setInterval(function() {
            start += step;
            $el.text(start);
            if(start >= max)
                clearInterval(interval);
        }, refresh);
    });

我的问题是我的数字从几百到几十万不等。使用此脚本,较大的数字需要更多时间才能达到其值。

我的目标是让任何数字,无论其目标值如何,都需要相同的时间来达到它。我觉得我应该将该数字除以我希望动画运行的秒数,然后将结果设置为间隔步骤?

我正在询问,但仍在寻求帮助:)

谢谢。

最佳答案

$('.grow').each(function() {
    var $el = $(this);
    var max = parseInt($el.text().replace(/\s/g, ''));
    var duration = 1000; // shared duration of all elements' animation
    var refresh = 5;
    var frames = duration / refresh; // number of frames (steps)
    var start = 0;
    var step = Math.max(Math.round(max / frames), 1); // step should be >= 1
    var interval = window.setInterval(function() {
        if(start + step < max) {
            start += step;
        }
        else {
            start = max;
            clearInterval(interval);
        }
        $el.text(start);
    }, refresh);
});

关于javascript - 使用 jQuery 对每个数字使用相同的时间使数字增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26211909/

相关文章:

javascript - javascript 的 setInterval() 方法运行是否会随着时间的推移消耗明显的处理能力?

javascript - 无法在函数中调用窗口位置对象

javascript - Node js,如何在循环后运行代码同步

javascript - 我的 html 文件不会链接到位于父目录中的样式表和 javascript

JQuery 动态创建元素上的单击事件

javascript - d3 瀑布图在 x 轴值上旋转 180 到 -90 度

javascript - 动态更新和检查对象数组

Jquery 选择器错误,无法在单击事件中选择元素

javascript - 如何启动 setInterval 的计数器

jquery - setInterval 在 jquery 中不起作用