Увеличьте число на основе даты или интервала javascript (и сохраните его после refre sh page) - PullRequest
0 голосов
/ 28 января 2020

Я борюсь за то, чтобы понять, как увеличить число на основе даты или времени (с помощью setInterval).

Я не знаю, какой вариант проще. Я сделал это с помощью setInterval:

HTML

 <p class="counter"></p>

JS

let tickets = 35000;
        const counter = document.querySelector('.counter');

        let interval = setInterval(function(){
        console.log(tickets);

        if (tickets >= 60000) {

            var textSoldOut = `<p>¡Todo vendido!</p>`;
            counter.innerHTML = textSoldOut;
            console.log("Sold out");
            clearInterval(interval);

        }else{
            var text = `¡${tickets} tickets Sold!`;
            contador.innerHTML = text;
            console.log(text)
        }

        const random = Math.floor(Math.random()*(200-100+1)+100);
        tickets += random;


        }, 10000);

Дело в том, что каждый раз, когда страница обновляется, счетчик начинается с 35000 раз. Я пытаюсь выяснить, как хранить билеты. Я предполагаю, что это будет сделано с помощью localStorage, но, поскольку я новичок в JS, я не могу это сделать.

Другой вариант - проверить дату и, исходя из этого, показать номер:

function date() {
            var d = new Date();
            var month = d.getMonth();
            var day = d.getDate();

            const counter = document.querySelector('.contador');
            const random = Math.floor(Math.random()*(200-100+1)+100);

            for (let i = 350000; i <= 60000 ; i++) {

                if (month == 0 & day == 28) {
                    var sum = i + random;
                    document.getElementById("contador").innerHTML = suma;
                }else if (mes == 0 & dia == 30) {
                    ...
                } else if (...){
                    ...
                }

            }

            document.getElementById("dia").innerHTML = dia;
            document.getElementById("mes").innerHTML = mes;
        }

        fecha();

Может ли кто-нибудь помочь мне достичь результата? Я был бы очень признателен

1 Ответ

2 голосов
/ 28 января 2020

Объект Хранилище , доступный через свойство localStorage, предлагает два способа сохранения или извлечения данных: setItem и getItem().

Использование довольно просто. Если вы хотите сохранить номера билетов в ключе myTickets на localStorage, вы должны сделать это следующим образом:

localStorage.setItem("myTickets", tickets);

Чтобы впоследствии получить эти данные:

localStorage.getItem("myTickets");

Вам просто нужно обновить ключ myTickets в localStorage, когда вы увеличите количество билетов внутри функции обратного вызова setinterval.

let tickets = 35000;
if (localStorage.getItem("myTickets") == null) {
  localStorage.setItem("myTickets", tickets);
} else {
  tickets = localStorage.getItem("myTickets");
}

const counter = document.querySelector('.counter');

let interval = setInterval(function() {
  console.log(tickets);

  if (tickets >= 60000) {

    var textSoldOut = `<p>¡Todo vendido!</p>`;
    counter.innerHTML = textSoldOut;
    console.log("Sold out");
    clearInterval(interval);

  } else {
    var text = `¡${tickets} tickets Sold!`;
    console.log(text)
  }

  const random = Math.floor(Math.random() * (200 - 100 + 1) + 100);
  tickets += random;
  localStorage.setItem("myTickets", tickets);

}, 10000);
...