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

jQuery实现的数字计数器停留在0不向上计数该如何解决?

计数器不生效的核心原因及修复方案

1. HTML元素class属性重复定义,counter类未生效

你的<h4>标签重复写了两次class属性,浏览器只会识别第一个class属性,第二个声明的counter类会被直接忽略,导致jQuery的$('.counter')选择器找不到对应元素,计数逻辑完全不会触发。

错误写法:

<h4 class="txt-primary  fs40 mb-0" class="counter" data-count="150">0</h4>

修复方式:合并两个class属性即可

<h4 class="txt-primary fs40 mb-0 counter" data-count="150" style="font-family: 'Inter', sans-serif; font-weight: 500;">0</h4>

2. JS执行时机早于DOM渲染完成

你把JS代码放在head段加载时,页面DOM还没完成渲染,代码执行时页面还没有生成对应的counter元素,选择器匹配为空自然不会执行动画。
修复方式二选一:

  • 把你的JS代码挪到</body>标签之前,等所有DOM元素加载完成后再执行
  • 把JS代码包裹在jQuery的DOM就绪回调中:
$(document).ready(function() {
  $('.counter').each(function() {
    var $this = $(this),
      countTo = parseInt($this.attr('data-count'), 10); // 额外把字符串转成数字,避免类型异常

    $({countNum: parseInt($this.text(), 10)}).animate({
        countNum: countTo
      },
      {
        duration: 8000,
        easing: 'linear',
        step: function() {
          $this.text(Math.floor(this.countNum));
        },
        complete: function() {
          $this.text(this.countNum);
        }
      });
  });
})

可选优化点

你原来代码里从data-count和元素文本取到的值都是字符串类型,虽然jQuery的animate方法会自动做隐式类型转换,还是建议手动转成数字类型,避免特殊场景下的计数异常,上面给出的修复代码已经做了对应处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:03