Javascript.RU

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

Автоматическое увесличение чисел в счетчике
Приветствую!
Подскажите, как реализовать следующую задумку:
Есть на странице число 1. Необходимо в течение суток несколько раз (не более 4 раз в сутки) прибавлять к нему число от 1 до 2. Остановиться счетчик должен когда достигнет отметки 30000. Сброс счетчика не предусмотрен.
Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 17.10.2023, 13:23
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

А страница, что, все это время открыта?
Нужна четкая постановка для реализации: сколько раз, в какое время прибавлять, какое число когда прибавлять.

А так запоминайте в localStorage, когда, что прибавили и текущий результат. При открытии страницы сами решайте, по вашему алгоритму, когда что прибавлять.

Последний раз редактировалось voraa, 17.10.2023 в 13:27.
Ответить с цитированием
  #3 (permalink)  
Старый 17.10.2023, 14:38
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

Нет, страница не открыта. Прибавление числа должно быть постоянным, начиная с того дня, как добавили скрипт, в течение всего времени, пока не настанет день и число достигнет 30000. Интервал времени, через которое прибавляется число - в течение суток, значит 1 раз в 6 часов можно сделать. Наличие пользователя на странице, при этом, значения не имеет.
Ответить с цитированием
  #4 (permalink)  
Старый 17.10.2023, 16:38
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

Страница никак не может узнать, когда ее установили на сервер. Поэтому время установки страницы (начало отсчета) надо указать на самой странице.
Как то так
(тут для примера время увеличения счетчика установлено 1 мин. Для 6 часов закомментарить эту строку и раскомментарить следующую)
<body>
<span id="counter"></span>

<script>

// Указываем время установки страницы
const timeStart = new Date (2023, 09, 17, 16, 25);

const maxcount = 30_000;

//const timeTick = 24*60*60*1000; // 6 часов
const timeTick = 60*1000; // 1 мин

function nextCount () {
	let now = Date.now();  // Текущее время 
	const count = Math.floor((now - timeStart)/timeTick); // Количество прошедших интервалов
	
	document.getElementById('counter').textContent = count;
	
	const nextTick = timeStart.valueOf() + (count + 1) * timeTick; // Время следующего увеличения
	const dt = nextTick - now; // Сколько осталось до следующего увеличения
	if (count < maxcount) {
		setTimeout(nextCount, dt);
	}
}

nextCount();
</script>
</body>
Ответить с цитированием
  #5 (permalink)  
Старый 17.10.2023, 17:04
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от samdo
число достигнет 30000
Сообщение от samdo
прибавляется число
Сообщение от samdo
1 раз в 6 часов
=30000/(24/6)/365=20

У тебя счетчик на 20 лет?

Последний раз редактировалось Rise, 17.10.2023 в 17:08.
Ответить с цитированием
  #6 (permalink)  
Старый 17.10.2023, 18:24
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

Сообщение от Rise Посмотреть сообщение
=30000/(24/6)/365=20

У тебя счетчик на 20 лет?
Примерно да)
Ответить с цитированием
  #7 (permalink)  
Старый 17.10.2023, 21:28
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

Похоже у меня не совсем верно. Ведь страницу могут открыть и в Москве и в Пекине и Оттаве. Надо учитывать зоны. Поэтому надо задавать время начала отсчета UTC (По Гринвичу) и текущее время приводить к UTC
Так будет вернее
<body>
<span id="counter"></span>

<script>

// Указываем UTC время установки страницы (по Гринвичу)
const timeStartUTC = new Date (2023, 09, 17, 16, 25);

const maxcount = 30_000;

//const timeTick = 24*60*60*1000; // 6 часов
const timeTick = 60*1000; // 1 мин

function nextCount () {
	let nowUTC = Date.now() + new Date().getTimezoneOffset() * 60 *1000;  // Текущее время по Гринвичу 
	const count = Math.floor((nowUTC - timeStartUTC)/timeTick); // Количество прошедших интервалов
	
	document.getElementById('counter').textContent = count;
	
	const nextTick = timeStartUTC.valueOf() + (count + 1) * timeTick; // Время следующего увеличения
	const dt = nextTick - nowUTC; // Сколько осталось до следующего увеличения
	if (count < maxcount) {
		setTimeout(nextCount, dt);
	}
}

nextCount();
</script>
</body>
Ответить с цитированием
  #8 (permalink)  
Старый 19.10.2023, 19:58
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

Преогромнейшая благодарность!
P.S. А вот это точно правильно: const timeTick = 24*60*60*1000; // 6 часов ? Каждый день прибавляется +1 (т.е. не 1 раз в 6 часов, а 1 раз в 24 часа).
Ответить с цитированием
  #9 (permalink)  
Старый 19.10.2023, 22:03
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

Сообщение от samdo
вот это точно правильно: const timeTick = 24*60*60*1000; // 6 часов ?
Нда. Это не правильно
Надо
const timeTick = 6*60*60*1000; // 6 часов
Ответить с цитированием
  #10 (permalink)  
Старый 20.10.2023, 09:53
Аспирант
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 98

А если прибавлять не один, а рандомно 1 или 2. Что в count в данном случае прописывается ?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генератор случайных чисел без повторений в последующих генерациях Samik Общие вопросы Javascript 14 12.03.2023 00:35
Прибавление чисел (как в счетчике) samdo Общие вопросы Javascript 18 11.02.2020 20:53
Вот такое задание, но я только в начале пути вэб разработки, подскажите как? Dixlofos Общие вопросы Javascript 31 22.10.2018 01:48
НОД более чем 2-х чисел Demath Общие вопросы Javascript 4 06.01.2013 05:27
Работа с последовательностью натуральных чисел Stillife Общие вопросы Javascript 1 18.05.2011 20:03