【发布时间】:2018-09-06 18:16:14
【问题描述】:
我在我的应用程序中运行一个计时器,它将分钟和秒的值存储在 cookie 中。在特定时间段,如果用户在弹出窗口中单击确定按钮,弹出窗口将提示一次,计时器需要重置并重新开始初始值。
function startTimer(duration) {
var timer = duration,
minutes, seconds;
var seesionIdState = 0;
setInterval(function() {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
if (seesionIdState == 0) {
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
var date = new Date();
date.setTime(date.getTime() + (minutes * 60 * 1000));
cookie.set("minutes", minutes.toString(), {});
cookie.set("seconds", seconds.toString(), {});
if (--timer < 0) {
timer = 0;
}
if (minutes == 1 && seconds == 00) {
if ($window.innerWidth > 767) {
angular.element("#sessionId").modal({
backdrop: 'static'
});
setTimerforPopup();
} else {
angular.element("#sessionIdMobile").modal({
backdrop: 'static'
});
setTimerforPopup();
}
} else if (minutes == 00 && seconds == 00) {
seesionIdState++;
}
} else {
var minutes_data = getCookie("minutes");
var seconds_data = getCookie("seconds");
if (!minutes_data || !seconds_data) {
return;
}
cookie.remove('minutes');
cookie.remove('seconds');
}
}, 1000);
}
startTimer(60);
如果单击确定按钮,我将再次调用函数startTimer(60);。但我面临的问题是setinterval 变量timer 没有得到更新,它正在使用旧值。
请帮我重置并从给定值开始。
【问题讨论】:
标签: javascript jquery html