使用jquery一分钟后计时器没有触发,或者每1分钟后给出一些其他解决方案来触发功能?

时间:2016-05-09 09:34:16

标签: javascript jquery jquery-ui javascript-events

 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);
}

这个代码我正在使用,但它第一次工作得很好,之后它开始减少并且很快就会起火。我不知道它是怎么发生的。 请帮助我,如果你有更好的解决方案。请你分享一下吗?

1 个答案:

答案 0 :(得分:0)

您可以使用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);