2017-01-06 10 views
0

Я пытаюсь сделать обратный отсчет, который не перезапускается после обновления этой страницы. Я использую обратный отсчет времени кетов. Я хочу пересчитать до 5 минут.Обратный отсчет Javascript, который сохраняется на странице обновления

var countdownTarget = localStorage.getItem('countdownTarget'); 
    if (countdownTarget === null) 
    { 
     var countdownTarget = new Date(); 
     countdownTarget = new Date(countdownTarget.getFullYear(), countdownTarget.getMonth(), countdownTarget.getDate(), countdownTarget.getHours(), countdownTarget.getMinutes() + 5, countdownTarget.getSeconds()); 
     localStorage.setItem('countdownTarget', countdownTarget); 
    } 

    $('#defaultCountdown').countdown({ until : countdownTarget, format: 'MS', compact: true}); 

Я спасаю текущую дату + 5 минут браузера локального хранения как countdownTarget (только если это не было сделано ранее). И если пользователь обновляет страницу, время должно быть постоянным. Но есть проблема. Когда я загружаю страницу в первый раз, время отсчитывается от 5 минут (это должно быть нормально), но когда я пытаюсь обновить его снова, он начинает отсчет с 36 минут, и я не знаю, почему, и я не знаю откуда эти 36 минут.

+0

Откуда берутся 36 минут? Не вижу ничего подобного в примере кода. –

+0

вы, вероятно, не хотите теневать CountdownTarget, если null, произнеся var = – aw04

+1

Я уверен, что localStorage хранит данные как строки. Если вы загружаете сохраненную строку из localStorage и затем добавляете ее в int, вы не получите ожидаемого результата. Вам необходимо преобразовать эту сохраненную строку обратно в int, прежде чем добавлять ее в свой счетчик. – Korgrue

ответ

1

Вместо повторного объявления даты, почему бы не увеличить количество минут? Ваш код работал для меня. Кроме того, вы должны только инициировать countdownTarget один раз.

var countdownTarget = localStorage.getItem('countdownTarget'); 
if (countdownTarget === null) { 
    countdownTarget = new Date(); 
    countdownTarget.setMinutes(countdownTarget.getMinutes() + 5); 
    localStorage.setItem('countdownTarget', countdownTarget); 
} else { 
    countdownTarget = new Date(countdownTarget); 
} 
$('#defaultCountdown').countdown({ until : countdownTarget, format: 'MS', compact: true});