2017-05-16 12 views
0

私は、セッションが保存されているので、ページが更新されたときにリセットされません。しかし、それは動作しません。なぜそれが動作していないのかわかりません。ページがリフレッシュされると、JavaScriptが組み込まれたJavaScriptがリセットされます

ここに、タイマーのコードとセッション記憶域に格納されているコードを示します。たぶん私はそれを格納する際に問題がありますか?

function getTimeRemaining(endtime) { 
    var t = Date.parse(endtime) - Date.parse(new Date()); 
    var seconds = Math.floor((t/1000) % 60); 
    var minutes = Math.floor((t/1000/60) % 60); 
    var hours = Math.floor((t/(1000 * 60 * 60)) % 24); 
    var days = Math.floor(t/(1000 * 60 * 60 * 24)); 
    return { 
    'total': t, 
    'days': days, 
    'hours': hours, 
    'minutes': minutes, 
    'seconds': seconds 
    }; 
} 

function initializeClock(id, endtime) { 
    var clock = document.getElementById(id); 
    var daysSpan = clock.querySelector('.days'); 
    var hoursSpan = clock.querySelector('.hours'); 
    var minutesSpan = clock.querySelector('.minutes'); 
    var secondsSpan = clock.querySelector('.seconds'); 

function updateClock() { 
    var t = getTimeRemaining(endtime); 

    daysSpan.innerHTML = t.days; 
    hoursSpan.innerHTML = ('0' + t.hours).slice(-2); 
    minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); 
    secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); 


if (t.total <= 0) { 
    clearInterval(timeinterval); 
    swal("Oops", "Your time is up! Test will be submitted automatically.", "error"); 
    setTimeout(function(){ 
    $(document).ready(function(){$("#submitLinguistics").click();}); 
    clearInterval(myInterval); 
    window.onbeforeunload = null; 
    },3000); 
} 
} 

updateClock(); 
var timeinterval = setInterval(updateClock, 1000); 
} 


sessionStorage.setItem('deadline', new Date(Date.parse(new Date()) + (40* 60 * 1000))); 
initializeClock('clockdiv', sessionStorage.getItem('deadline')); 
+0

は、HTMLは、私はあなたがページを更新するときに、新しい期限を作成すると思う – RahulB

+0

をスニペット共有してください。 – Gerard

答えて

0

ライン

sessionStorage.setItem('deadline', new Date(Date.parse(new Date()) + (40* 60 * 1000))); 

はリフレッシュに再び実行されますと期限が新しいタイムスタンプで更新されるので、それが起こっています。あなたはそれが好き行うことができます

-

if(!sessionStorage.getItem('deadline')){ 
    sessionStorage.setItem('deadline', new Date(Date.parse(new Date()) + (40* 60 * 1000))); 
} 
+0

タイムインターバルが解消されたときに締め切りを外すのを忘れないでください。 – Gerard

+0

ありがとうございました@RahulBうまくいきました! –

+0

それは良い点です。ありがとうございました! @ジェラール –

関連する問題