【问题标题】:Timer is not triggering after one minute using jQuery or give some other solution to trigger function after every 1 min?计时器在使用 jQuery 一分钟后没有触发,还是在每 1 分钟后提供一些其他解决方案来触发功能?
【发布时间】:2016-09-03 21:08:54
【问题描述】:
 var setTimer;
 var isTimeSet = false;

 if (!isTimeSet) {
    setTimer = $('#hdn_timerTime').val();
    isTimeSet = true;
    
  }



initialTimer();
function initialTimer() {        
    var CustomMinutes = 60 * parseInt(setTimer),

        display = $('#time'); 
    startTimer(CustomMinutes, display);
}

function startTimer(duration, display) {
   
    var timer = duration, minutes, seconds;
    setInterval(function () {

        minutes = parseInt(timer / 60, 10)
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.text(minutes + ":" + seconds);

        if (--timer < 0) {
         
            timer = duration;
            $('#outputmeters').val(JSON.stringify(listItem));
            // _hardMeter.UpdateMeterData();
            _hardMeter.TempUpdateMeterDataConfirmation();

        }
    }, 1000);
}

我正在使用此代码,但第一次运行良好,之后它开始减少并快速启动功能。我不知道这是怎么回事。

如果您有更好的解决方案,请帮助我。可以分享一下吗?

【问题讨论】:

  • setTimer 的值为 1。

标签: javascript jquery jquery-ui jquery-events


【解决方案1】:

您可以使用setInterval 以设定的时间间隔重复调用相同的函数,直到页面被卸载或您调用clearInterval

var timedFunction = function() {
  ... // Do something
}

setInterval(timedFunction, 60 * 1000);

如果您的定时函数采用每次都更改的参数,请使用 setTimeout 并在函数体中调用它

var timedFunctionWithArguments = function(iterations) {

  console.debug(iterations); // Do something

  setTimeout(timedFunctionWithArguments, 60 * 1000, iterations++);
}

timedFunctionWithArguments(0);

【讨论】:

  • 每次调用timedFunction 时,都会创建新的间隔......这很糟糕。
  • 任何人都可以在完成倒计时后给我一些计时器倒计时的其他示例,它应该执行方法并再次重置为开始,然后再次倒计时应该开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2017-03-03
  • 2011-07-06
相关资源
最近更新 更多