如何clearInterval jQuery

时间:2016-03-13 09:12:17

标签: jquery setinterval clearinterval

您好我想使用clearInterval()来停止通过单击链接从函数调用的setInterval,当我点击链接时,setInterval() (for 30 seconds)开始工作得非常好但是我想如果用户再次点击链接,那么setInterval()会再次启动。请检查下面的代码

SCRIPT

    function otpTimer(container, count) {
          container.find('timer').html(count + ' seconds');
          setInterval(function () {
            if (count < 1) {
              container.find('.resend').show();
              container.find('.setTimer').hide();
            }
            else {
              count--;
              container.find('.timer').html(count + ' seconds');
            }
          }, 1000);
        }

    function stopOtpTimer(clearme) {
      window.clearInterval(clearme);
    }

$(document).on('click', '.loginContainer #resendForgotPasswordOtpLink', function (e) {

    var url = $(this).attr('data-url');
    var count = 30;
    var container = $(this).closest('.otpIcon');
    var timer;

    container.find('.resend').show();
    container.find('.setTimer').show();

    stopOtpTimer(timer);
timer = otpTimer(container, count);
})

3 个答案:

答案 0 :(得分:0)

您需要setInterval函数从otpTimer返回的值的return语句。

所以:

return setInterval(....)

答案 1 :(得分:0)

在这里,您要声明“var timer”,从那里替换到最后,通过以下更改,应该给出您预期的行为。

container.find('.resend').show();
container.find('.setTimer').show();
if(timer){
   stopOtpTimer(timer);
   timer = otpTimer(container, count);
}else{
  var timer;
  timer = otpTimer(container, count);
}

答案 2 :(得分:0)

在函数

之前和之外公开声明clearme
clearme = setInterval(function () {
            if (count < 1) {
              container.find('.resend').show();
              container.find('.setTimer').hide();
            }
            else {
              count--;
              container.find('.timer').html(count + ' seconds');
            }
          }, 1000);

然后清除间隔:

clearInterval(clearme);