2013-08-05 3 views
0

У меня проблема с кодом JS.Javascript Cookie - Обратный отсчет

Я пытаюсь получить обратный отсчет, чтобы начать с случайного числа между двумя точками (в этом примере 50 & 60) и обратным отсчетом в случайные интервалы. Если пользователь обновляется, я хочу, чтобы обратный отсчет продолжился с того места, где он был последним до обновления. Мне удалось подойти так близко, но теперь (особенно в FF) я продолжаю получать (NaN) в качестве выхода.

Может кто-то, пожалуйста, спасти меня от разгрома моего ноутбука? :)

Благодаря

<script> 
    var minSpaces = 50; //Minimum spaces to start with 
    var maxSpaces = 60; //Maximum spaces to start with 
    var maxDecTime = 6000; //Max time interval between decrements 
    var minDecTime = 300; //Min time interval between decrements 
    var redirectWhenDone = 0; //Redirect = 1 set to 0 for no redirect 
    var stopSpaces = 3; //Number it will stop at if not using redirect 
    var redirectLocation = 'http://www.google.com'; 

    if(document.cookie) { 
     maxSpaces = parseInt(document.cookie); 
     minSpaces = parseInt(Math.max(maxSpaces-5, 1)); 
    } 
    var spaces = Math.floor(Math.random()*(maxSpaces-minSpaces+1)+minSpaces); 
    function updateSpaces() { 
     spaces--; 
     document.cookie = spaces+'; expires=Thu, 2 Aug 2015 20:47:11 UTC; path=/'; 
     document.getElementById('spaces').innerHTML = 
      '<span style="color:orange;">('+spaces+')</span> orders left!'; 
     var intvl = Math.round(Math.random()*maxDecTime) + minDecTime; 
     if(spaces>stopSpaces){ 
      setTimeout(updateSpaces, intvl); 
     } 
     else {//No spaces left, redirect! 
      if(redirectWhenDone==1) { 
       window.top.location = redirectLocation; 
      } 
}} 
    window.onload=updateSpaces; 
</script> 

ответ

0

Я хотел бы использовать sessionStorage провести некоторые JSON и setTimeout

function randomInt(min, max) { 
    return min + Math.floor(Math.random() * (max - min + 1)); 
} 

function randomCountdown(current, interval) { 
    var minStart = 50, maxStart = 60, 
     minInterval = 300, maxInterval = 6000; 
    var json = JSON.parse(window.sessionStorage.getItem('randomCountdown') || '{}'); 
    current = current || json.current || randomInt(minStart, maxStart); 
    interval = interval || json.interval || randomInt(minInterval, maxInterval); 
    window.sessionStorage.setItem('randomCountdown', JSON.stringify({ 
     current: current, 
     interval: interval 
    })); 
    if (--current) { 
     console.log('countdown', current, interval); 
     // do whatever 
     window.setTimeout(
      function() {randomCountdown(current, interval)}, 
      interval 
     ); 
    } else { 
     console.log('done'); 
    } 
} 

randomCountdown(); // start 
+0

Я действительно ценю ответ, но я немного запутался (и сильно глупый) - это я правильно ли предположить, что вышеуказанный код необходимо разместить внутри тегов? если так, я пробовал это, и ничего не происходит. Еще раз спасибо –

+0

Строки 'console.log' и' // do whatever' должны быть изменены на нужное действие, '--current' уменьшает на' 1' каждую итерацию. Этот код был таким, чтобы вы могли видеть пример его возобновления обратного отсчета в консоли –

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