You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改jQuery数字计数函数以添加千位分隔逗号?

给jQuery计数动画加上千位分隔符

嘿,这事儿不难!你只需要加个数字格式化的小函数,再改改动画里的文本更新逻辑就行。我给你整理好了完整的修改代码:

jQuery(document).ready(function($) {
  // 写个工具函数,给数字加千位分隔符
  function addThousandSeparators(num) {
    return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  }

  $('.counter').each(function() {
    var $this = $(this),
        // 把data-count的值转成数字,避免字符串问题
        targetCount = parseInt($this.attr('data-count'), 10);
    
    // 初始化计数的时候,先把现有文本里的逗号去掉再转数字
    $({currentCount: parseInt($this.text().replace(/,/g, ''), 10)}).animate({
      currentCount: targetCount
    }, {
      duration: 999,
      easing: 'linear',
      step: function() {
        // 每次动画走一步,就把当前计数取整、格式化后显示
        $this.text(addThousandSeparators(Math.floor(this.currentCount)));
      },
      complete: function() {
        // 动画结束后再确认下最终值,防止精度问题
        $this.text(addThousandSeparators(targetCount));
      }
    });
  });
});

为啥这么改?给你唠唠关键点:

  • 格式化函数:addThousandSeparators用正则表达式搞定千位分隔,原理是找到每三个数字的边界(不是开头),插入逗号,这个正则是处理数字千分位的常用写法。
  • 初始值处理:原来的HTML里已经有300,000,所以初始化的时候得把逗号去掉转成纯数字,不然动画起始值会是NaN或者不对。
  • 步进更新:动画每一步都会调用step函数,这里先取整(保持整数计数),再格式化后显示,这样动画过程中数字就一直带逗号了。
  • 收尾兜底:有时候动画结束可能因为精度问题显示的不是最终值,所以在complete回调里再设置一次正确的格式化数值,稳得很。

你的HTML不用改,还是原来的就行:

<span class="number counter" data-count="300000">300,000</span>

这样改完,计数动画就会从初始值平滑过渡到带千位分隔符的目标数字啦~

内容的提问来源于stack exchange,提问作者Zach Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:19:58