Sign in to follow this  
Followers 0
Beauty

localstorage на JS

21 posts in this topic

подскажите пожалуйста как записать данные в localstorage браузера на сутки, чтобы счетчик не обновлялся каждый раз при перезагрузке страницы

var deadline = new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000); // for endless timer

Share this post


Link to post
Share on other sites
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);
    }
  }
 
  updateClock();
  var timeinterval = setInterval(updateClock, 1000);
}
 
//var deadline="march 12 2018 00:00:00 GMT+0300"; //for Ukraine
var deadline = new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000); // for endless timer


initializeClock('clockdiv', deadline);

 

вот весь код, все работает отлично кроме того, что обновляется при переходе по страницам :(

Share this post


Link to post
Share on other sites

Добавляем

localStorage.setItem('ключ', 'значение')

Достаём

localStorage.getItem('ключ')

и бери время просто 

new Date();

в итоге как то так будет

// 
var time = new Date();

if ( localStorage.getItem('ключ') < time ) { // срок закончился
  
	localStorage.setItem('ключ', ( time + интервал )); обновимся
                                       
} else {
         ..... // Все норм, страницу вызывали уже в заданный интервал
}
         

и не забудь про undefined

Vovik likes this

Share this post


Link to post
Share on other sites

Не совсем понимаю ключ значение и прочее

Что добавить надо то и куда? :(

Share this post


Link to post
Share on other sites
Только что, Beauty сказал:

Не совсем понимаю ключ значение и прочее

Что добавить надо то и куда? :(

Не понимаю ключ => значение ? :) Почитай, пригодится.

Вот и подумай что и куда, не все же за тебя другие люди писать будут

ответ более чем исчерпывающий. 

Share this post


Link to post
Share on other sites

Про это ключ значение и тд везде пишут, а что куда и как непонятно

Share this post


Link to post
Share on other sites

Там текста на 3 дня читать,  не говоря уже чтобы понять все что там написано))))

Share this post


Link to post
Share on other sites

голова кругом от ключ-значение, подскажи что куда дописать пожалуйста

Share this post


Link to post
Share on other sites
var deadline = new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000); // for endless timer
 
var deadline = new Date();

if ( localStorage.getItem('deadtime') < deadline ) { // срок закончился
  
	localStorage.setItem('deadtime', ( deadline + 2 * 22 * 60 * 60 * 1000 )); обновимся
                                       
} else {
         initializeClock('clockdiv', deadline);
}

заменил первую строку на это, не работает, подскажи что не так?

Share this post


Link to post
Share on other sites

у меня все работает

может перед обновимся добавить // ? Закомментировать это слово

Beauty likes this

Share this post


Link to post
Share on other sites
15 минут назад, gefard сказал:

у меня все работает

может перед обновимся добавить // ? Закомментировать это слово

// это само собой

но время показывает -1 -1 -1 -1...

Share this post


Link to post
Share on other sites
Только что, Beauty сказал:

// это само собой

но время показывает -1 -1 -1 -1...

else {
initializeClock('clockdiv', new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000) );
}

 

Beauty likes this

Share this post


Link to post
Share on other sites

deadtime записалось в localstorage как Sat Mar 10 2018 20:47:36 GMT+0300 (MSK)158400000 (на две минуты назад)

var deadline = new Date();

if ( localStorage.getItem('deadtime') < deadline ) { // срок закончился
  
	localStorage.setItem('deadtime', ( deadline + 2 * 22 * 60 * 60 * 1000 )); //обновимся
                                       
} else {
    initializeClock('clockdiv', new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000) );
}

теперь счетчик работает но при обновлении страницы все по новой начинается

грубо говоря то же самое что и было изначально тока теперь deadtime просроченный записан в storage :huh:

Share this post


Link to post
Share on other sites
28 минут назад, Beauty сказал:

deadtime записалось в localstorage как Sat Mar 10 2018 20:47:36 GMT+0300 (MSK)158400000 (на две минуты назад)


var deadline = new Date();

if ( localStorage.getItem('deadtime') < deadline ) { // срок закончился
  
	localStorage.setItem('deadtime', ( deadline + 2 * 22 * 60 * 60 * 1000 )); //обновимся
                                       
} else {
    initializeClock('clockdiv', new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000) );
}

теперь счетчик работает но при обновлении страницы все по новой начинается

грубо говоря то же самое что и было изначально тока теперь deadtime просроченный записан в storage :huh:

Да что ж делать то будешь? было же написано

} else {
         ..... // Все норм, страницу вызывали уже в заданный интервал
}

значит

var deadline = Math.floor( new Date() );

if ( localStorage.getItem('deadtime') < deadline || localStorage.getItem('deadtime') === undefined ) { // срок закончился
  
	localStorage.setItem('deadtime', ( deadline + ( 2 * 22 * 60 * 60 * 1000 ) ));
    initializeClock('clockdiv', new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000) );
                                       
} 

сотри localStorage

Share this post


Link to post
Share on other sites
46 минут назад, gefard сказал:

var deadline = Math.floor( new Date() ); if ( localStorage.getItem('deadtime') < deadline || localStorage.getItem('deadtime') === undefined ) { // срок закончился localStorage.setItem('deadtime', ( deadline + ( 2 * 22 * 60 * 60 * 1000 ) )); initializeClock('clockdiv', new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000) ); }

тоже нифига не работает(

Share this post


Link to post
Share on other sites

у меня все работает. и да ответ нифига не работает это не ответ.

что конкретно? 

localStorage не записывается? его формат не правильный?

что консоль пишет? там есть ошибки? 

к сожалению я не телепат.

Share this post


Link to post
Share on other sites
3 минуты назад, gefard сказал:

у меня все работает. и да ответ нифига не работает это не ответ.

что конкретно? 

localStorage не записывается? его формат не правильный?

что консоль пишет? там есть ошибки? 

к сожалению я не телепат.

https://getkeds.ru/products/new-balance-580-elite-edition-with-fur-beigesilver-grey-uy2269gk

сделал и так и так уже, максимум что добился это то, что счетчик работает, в storage deadtime записалась текущая дата и время и все.. но при обновлении стариницы счетчик обновляется

по сути вернулся к тому с чем пришел)

Share this post


Link to post
Share on other sites
Только что, Beauty сказал:

по сути вернулся к тому с чем пришел)

вот в том то и дело, правильно заданный вопрос - половина ответа

var deadline = Math.floor( new Date() );

if ( localStorage.getItem('deadtime') < deadline || localStorage.getItem('clock_end_time') === null ) { // срок закончился
    
    var clock_end_time = new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000);
                                              
	localStorage.setItem('deadtime', ( deadline + ( 2 * 22 * 60 * 60 * 1000 ) ));
    localStorage.setItem('clock_end_time', clock_end_time );
    initializeClock('clockdiv', clock_end_time );
                                       
} else initializeClock('clockdiv', localStorage.getItem('clock_end_time') );
 

пробуй этот, должен работать в твоем случае

Share this post


Link to post
Share on other sites
1 минуту назад, gefard сказал:

вот в том то и дело, правильно заданный вопрос - половина ответа


var deadline = Math.floor( new Date() );

if ( localStorage.getItem('deadtime') < deadline || localStorage.getItem('clock_end_time') === null ) { // срок закончился
    
    var clock_end_time = new Date(Date.parse(new Date()) + 2 * 22 * 60 * 60 * 1000);
                                              
	localStorage.setItem('deadtime', ( deadline + ( 2 * 22 * 60 * 60 * 1000 ) ));
    localStorage.setItem('clock_end_time', clock_end_time );
    initializeClock('clockdiv', clock_end_time );
                                       
} else initializeClock('clockdiv', localStorage.getItem('clock_end_time') );
 

пробуй этот, должен работать в твоем случае

алилуя) мне этот ключ + значение сегодня сниться будут)))) СПАСИБО!)))

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.