Я пытаюсь сделать простое перенаправление через x секунд на странице с таймером обратного отсчета. Каждый раз, когда я вызываю функцию, я хочу, чтобы таймер был сброшен, однако, когда я вызываю его во второй или третий раз, таймер, кажется, имеет 3 разных обратного отсчета. Кто-нибудь может понять, почему это так?
function delayRedirect(){
document.getElementById('countDown').innerHTML = 'Session Timeout In: <span id="countTimer"></span> seconds....';
clearInterval(sessionTimer);
var sessionTimer = null;
var timeleft = 60;
var sessionTimer = setInterval(function(){
timeleft--;
document.getElementById('countTimer').innerHTML = timeleft;
if(timeleft <= 0)
clearInterval(sessionTimer);
returnToLogin();
},1000);
}
delayRedirect
. Попробуйте установить это вне функции. - person Cata John   schedule 09.10.2018var sessionTimer = ...
.var
используется только для объявления переменной. - person Chris G   schedule 09.10.2018sessionTimer
— локальная переменная в этой функции. Каждый раз, когда вы вызываетеdelayRedirect
, значениеsessionTimer
равноnull
. Вам нужна глобальная переменная (или, по крайней мере, внешняя область), чтобы сохранить идентификатор sessionTimer между вызовами. - person Frax   schedule 09.10.2018sessionTimer
один раз вне функции. - person Chris G   schedule 09.10.2018