您好我想使用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);
})
答案 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);