Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2022, 13:26
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 88

Выполнение JS кода раз в сутки
На сайте есть блок с текстом - Сегодня на нашем сайте заказов 40.
Нужно что бы число с количеством заказов менялось раз в сутки в диапазоне от 10 до 50 для каждого пользователя.
Можно с помощью Math.floor генерировать число, записывать в localStorage как я понял.
Помогите пожалуйста грамотно написать скрипт.
Пока вот так получается у меня, но это не совсем то что нужно.
<p>Сегодня на нашем сайте заказов - <span id="zn">32</span></p>
<script>
var logElem = document.querySelector("#zn");
logElem.innerHTML = (Math.floor(Math.random() * 100) + 1);
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2022, 13:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,991

Читаешь данные из "хранилища"... Там сумма и дата, когда ты ее "объявил"...
Если там нет ничего... Или уже прошли сутки - объявляешь другую сумму и записываешь в "хранилище" сумму и время ее объявления.
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2022, 14:21
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 88

Это примерно так должно выглядеть?
<p>Сегодня на нашем сайте заказов - <span id="zn">32</span></p>
<script>
var logElem = document.querySelector("#zn");
if(!localStorage.logElem) localStorage.logElem = new Date()
if(localStorage.logElem && new Date() - localStorage.logElem) {
logElem.innerHTML = (Math.floor(Math.random() * 100) + 1);
}
</script>

Последний раз редактировалось maxg5, 16.06.2022 в 14:29.
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2022, 15:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,991

Сообщение от maxg5
Это примерно так должно выглядеть?
Я не увидел реализации следующих шагов
Сообщение от ksa
Если там нет ничего... Или уже прошли сутки - объявляешь другую сумму и записываешь в "хранилище" сумму и время ее объявления.
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2022, 16:48
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 88

Переписал код. Вот что получилось.
Немного изменил условие. Заманил дату на минуты. Т.е. что бы число с заказами менялось каждую минуту. Почему то не работает.
<p>Сегодня на нашем сайте заказов - <span id="zn">32</span></p>
<script>
function zakaz() {
var logElem = document.querySelector("#zn");
var znn = 30;
var date = new Date;
var time, znach, a, b;
a = localStorage.setItem (time , date.getMinutes());
b = localStorage.setItem(znach , znn);
if (a == date.getMinutes())
{
return true; 
} else {
a = localStorage.setItem (time , date.getMinutes());
logElem.innerHTML = (Math.floor(Math.random() * 100) + 1);
}
}
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2022, 17:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 32,591

maxg5,
https://javascript.ru/forum/misc/786...tml#post514405
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2022, 21:03
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 88

рони,
А как сделать что бы этот код работал с localStorage, т.е. как мне нужно.
Я пробовал сделать так, но не получается:
<p>Сегодня на нашем сайте заказов - <span id="zn">32</span></p>
<script>
var date = new Date;
var ll, time;
let nums = [14, 1249, 1327, 1632];// до какого числа анимировать
let secs = [0, 3, 5, 9];//сколько времени будет длится анимация
let pause = [5, 10, 15, 0 ]; //пауза, после которой, запустится следущаяя анимация
const elem = document.querySelector('#zn');
const anim = (i, r) => {
  let d = performance.now(),
  from = +elem.textContent,
  to = nums[i],
  duration = secs[i] * 1000;
  requestAnimationFrame( function e(b) {
  b = (b - d) / duration;
  1 <= b && (b = 1);
  let c = from + (to - from) * b | 0;
   localStorage.setItem(c, c);
  elem.innerHTML = localStorage.getItem(c, c);
  b == 1 && setTimeout(r,pause[i] * 1000);
  1 > b && requestAnimationFrame(e)
})
ll = localStorage.setItem (time , date.getMinutes());
if (localStorage.setItem (time , date.getMinutes()) == ll) {
return true;
} else {
elem.innerHTML = localStorage.getItem(c, c);
}
}
const delay = i => new Promise(r => anim(i, r));

(async () => {
	for (let i = 0; i < secs.length; i++) {
	    await delay(i);
	}
})();
</script>
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2022, 21:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 32,591

maxg5,
https://javascript.ru/forum/misc/786...tml#post544710
Ответить с цитированием
  #9 (permalink)  
Старый 20.06.2022, 15:05
Аспирант
Отправить личное сообщение для maxg5 Посмотреть профиль Найти все сообщения от maxg5
 
Регистрация: 16.08.2016
Сообщений: 88

рони,
Спасибо!
Это то что нужно.
А как сделать что бы в этом вашем коде работа была с целыми числами? Т.е. что бы после запятой не было чисел.
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
document.addEventListener('DOMContentLoaded', ready);
function ready()
{
   const options = {
        increment: .01, // прибавлять от .01 до 0.7
        different: .7,
        basic: 0.7, //начальное число
        delay: 10000, // пауза 10 сек
        differentDelay: 0,
        elem: document.querySelector('.box'), //куда выводить
        key: 'basic' //ключ базы??? localStorage в качестве базы данных
      };
   const random = (increment, different) => +(increment + Math.random() * different);
   const loop = () => {
       options.basic = localStorage.basic ? +localStorage[options.key] : options.basic;
       options.elem.innerHTML = options.basic.toFixed(2);
       options.basic += random(options.increment, options.different);
       localStorage[options.key] = options.basic;
       setTimeout(loop, random(options.delay, options.differentDelay))
   }
   loop()
}

  </script>
</head>

<body>
<div class="box"></div>

</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 20.06.2022, 15:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 32,591

Сообщение от maxg5
что бы после запятой не было чисел.
долго медитировать в конце строки 26)))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать участок кода посредствами JS FreeZon Общие вопросы Javascript 20 02.08.2014 16:30
При выполнение строки кода вылетаю из функции. developer_ Events/DOM/Window 3 28.07.2011 00:45
Выполнение скрипта раз в сутки по cookie Avel Mink Элементы интерфейса 16 29.04.2011 09:38
Рациональность JS кода. Илюшенций Общие вопросы Javascript 3 25.08.2010 13:02
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33