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

easytimer.js秒数超59自动重置,倒计时触发逻辑失效求助

问题原因分析

你遇到的问题核心在于对Timer库返回的秒数理解有误:timer.getTimeValues().seconds返回的只是当前分钟内的秒数(范围0-59),当定时器运行超过1分钟时,这个值会重置为0重新计数,而不是从启动开始的累计总秒数。

举个例子:当你设置timeToElapse = 59时,定时器运行到第60秒(也就是1分钟整),time.seconds会变成0,这时候你的判断time.seconds > 59显然不成立,反而会计算59 - 0 = 59,把倒计时又变回59,看起来就像定时器重置了。

解决方案

你需要改用累计总秒数来做判断,而不是当前分钟内的秒数。可以通过time.minutes * 60 + time.seconds计算总秒数,修改后的代码如下:

$("#start").click(function() {
  var timeToElapse = 59; // 现在可以设置任意数值,比如120、300都没问题
  var timer = new Timer();
  timer.start();
  
  timer.addEventListener('secondsUpdated', function(e) {
    var time = timer.getTimeValues();
    // 计算从定时器启动到现在的累计总秒数
    var totalElapsedSeconds = time.minutes * 60 + time.seconds;
    
    // 用总秒数判断是否到达设定时间,改成>=避免刚好等于时遗漏触发
    if (totalElapsedSeconds >= timeToElapse) {
      $('#hit').html('hit');
      timer.pause();
    } else {
      var remainingSeconds = timeToElapse - totalElapsedSeconds;
      $('#countdown').html(remainingSeconds);
    }
  });
});
额外说明
  1. 把判断条件从>改成>=是为了确保当累计秒数刚好等于timeToElapse时,也能触发"hit"逻辑,避免差1秒的遗漏情况。
  2. 改用总秒数后,无论你设置的timeToElapse是59、60还是更长的数值,倒计时都会准确计算剩余时间,到达设定值后也能正常触发暂停和文本更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:48:58