2015-01-31 3 views
0

Я не очень хорошо знаю JavaScript, но я должен использовать его в своем проекте.Обратный отсчет и локальное хранилище

Мне нужны таймеры обратного отсчета, которые после обновления страницы не останавливаются, не очищаются и не отображаются все время.

После нажатия кнопки вы переадресовываете на другую страницу, кнопка запуска startown ant имеет значение «disable». После обратного отсчета время автоматически должно иметь значение enable.

Вот мой проект: http://licznikii.cba.pl/dopostu/

В моей первой версии все работает хорошо, но не после обновления страницы. Обратные отсчеты очищаются.

В моей второй версии я использовал LocalStorage, и это хорошо работает, но не так много, что я не буду. После обновления страницы countowns скрыты. После кнопки времени обратного отсчета не будет автоматически enable значение, но после обновления. После обновления страницы после обратного отсчета все проявляется хорошо.

Пожалуйста, помогите

+0

В вашей второй версии, Вы должны получить таймер значение от LocalStorage и при загрузке страницы вы должны установить таймер, который имеет значение хранится в localStorage. После настройки содержимого запустите таймер с указанным временем (выбирается из localStorage). –

+0

Спасибо за sugestions, но я не знаю, как я могу это сделать. Мои навыки javaScript очень малы. В этом обратном отсчете помог мне сомоен. –

+0

Получайте удовольствие от своего решения и приветствия к польде :) – Blauharley

ответ

0

После изменения вашей второй-версии она работает. Я тестировал его во всех браузерах. Извините за не код-рефакторинг, но я думаю, что вы справиться с этим сейчас :)

<!-- -------------------------------------------------------- SECOND VERSION --> 
<script> 
$(document).ready(function(){ 

    $('#defaultCountdown3').countdown({until: 0, onTick: highlightLast5}); 

    var teraz = Date.now(); 
    var zapisanyCzas = localStorage.getItem("defaultCountdown3"); 

    if (zapisanyCzas !== null && teraz < +zapisanyCzas) { 

     var restTime = secDiff(teraz, +zapisanyCzas); 
     console.log(restTime); 

     $("#YourButton3").prop('disabled',true); 
     $('#defaultCountdown3').removeClass('highlight').countdown('option', {until: Math.round(restTime), onExpiry: countdownFinished}); 

    } else { 
     localStorage.removeItem("defaultCountdown3"); 
    } 

    function highlightLast5(periods) { 
    if ($.countdown.periodsToSeconds(periods) === 5) { 
     $(this).addClass('highlight'); 
     } 
    } 

    $('#YourButton3').click(function() { 
     localStorage.setItem("defaultCountdown3", Date.now() + 60 * 1000); 
     $('#defaultCountdown3').removeClass('highlight').countdown('option', {until: 60, onExpiry: countdownFinished}); 
     $("#YourButton3").prop('disabled',true) 
    }); 

    function countdownFinished(){ 
     // Finished - disable your button 
     localStorage.removeItem("defaultCountdown3"); 
     $("#YourButton3").prop('disabled',false) 
    } 

    function secDiff(start, end){ 
     var diff = Math.abs(start-end); 
     return (diff/1000); 
    } 

}); 
</script> 


<script> 
$(document).ready(function(){ 

    $('#defaultCountdown4').countdown({until: 0, onTick: highlightLast5}); 

    var teraz = Date.now(); 
    var zapisanyCzas = localStorage.getItem("defaultCountdown4"); 

    if (zapisanyCzas !== null && teraz < +zapisanyCzas) { 

     var restTime = secDiff(teraz, +zapisanyCzas); 
     console.log(restTime); 

     $("#YourButton4").prop('disabled',true); 
     $('#defaultCountdown4').removeClass('highlight').countdown('option', {until: Math.round(restTime), onExpiry: countdownFinished}); 


    } else { 
     localStorage.removeItem("defaultCountdown4"); 
    } 

    function highlightLast5(periods) { 
    if ($.countdown.periodsToSeconds(periods) === 5) { 
     $(this).addClass('highlight'); 
     } 
    } 

    $('#YourButton4').click(function() { 
     localStorage.setItem("defaultCountdown4", Date.now() + 120 * 1000); 
     $('#defaultCountdown4').removeClass('highlight').countdown('option', {until: 120, onExpiry: countdownFinished}); 
     $("#YourButton4").prop('disabled',true) 
    }); 

    function countdownFinished(){ 
     // Finished - disable your button 
     localStorage.removeItem("defaultCountdown4"); 
     $("#YourButton4").prop('disabled',false) 
    } 

    function secDiff(start, end){ 
     var diff = Math.abs(start-end); 
     return (diff/1000); 
    } 

}); 
</script> 
+0

Я пробовал ... пытался .... и ничего ...:/На самом деле это выглядит так: http://licznikii.cba.pl/dopostu/index2.php , Все работает хорошо, пока я не обновляю страницу. Я не знаю, что я делаю .... мои навыки JS .... –

+0

Вы пытались передать 60 или 120 или 180 и т. Д. В функции обратного отсчета, как до опции? Ты поступил правильно. это состояние выглядит правильно: zapisanyCzas! == null && teraz <+ zapisanyCzas. Какая проверка даты и времени localstorage будет в будущем, и если так, то она должна быть установлена ​​до-варианта соответственно. Но в этом состоянии вы определяете разницу в миллисекундах, а в ваших функциях вы передаете 60 или 120. Так может случиться так, что таймер не будет снова отсчитываться после обновления страницы. Но таймер запускается при нажатии какой-либо кнопки, и он снова пытается запустить таймер. Не сдавайтесь, вы почти закончили :) – Blauharley

+0

Посмотрите, в этой ситуации на второй версии http://licznikii.cba.pl/dopostu/ обратный отсчет работает хорошо, даже если я обновляю страницу, но обратный отсчет скрыт. например: я нажимаю первый буфер, начинаю отсчет с 60 секунд, обновляю страницу через 10 секунд - счет скрывается, я обновляюсь после показа 60 секунд. Это означает, что обратный отсчет работает. Мне нужно обратный отсчет на самом деле все время. Я думаю, что я должен показывать данные из локального хранилища, но я не знаю, как ... –

Смежные вопросы