Автоматичне оновлення дати початку в майбутньому (версія 2)

Запам'ятовує дату першого відвідування

by Сергій Куліков

HTML

Запрошую у мій Telegram канал, де я ділюся корисним: https://t.me/KulikovSerhiiChannel

<br><br>##########<br><br>

Як це працює? Наприклад, людина вперше зайшла на сайт:<br>
20.05 (скрипт виведе '22.05') потім зайшла<br>
21.05 (скрипт виведе '22.05') потім зайшла<br>
22.05 (скрипт виведе '22.05') потім зайшла<br>
23.05 (скрипт виведе 'Курс вже розпочався, але ви ще можете встигнути почати навчання') потім зайшла<br>
27.05 (скрипт виведе 'Курс вже розпочався, але ви ще можете встигнути почати навчання') потім зайшла<br>
28.05 (скрипт виведе '30.05') і далі все знову так само у циклі

<br><br>##########<br><br>










<div class="myCourse">
	<span class="myCourse__start-msg">Курс розпочнеться:</span>

	<span class="myCourse__end-msg">Курс вже розпочався, але ви ще можете встигнути почати навчання</span>

	<span class="myCourse__start-date"></span>
</div>



<style>
.myCourse {}

.myCourse__start-msg {}

.myCourse__end-msg {
	display: none;
}

.myCourse__start-date {}

.myCourse--started .myCourse__start-msg,
.myCourse--started .myCourse__start-date {
	display: none;
}

.myCourse--started .myCourse__end-msg {
	display: initial;
}
</style>



<script>
// Додаємо обробник події, який спрацьовує, коли документ повністю завантажений
document.addEventListener('DOMContentLoaded', () => {
	eventCountdown.main();
});

// Об'єкт з функціями для відображення подій та управління куками
const eventCountdown = {
	// Головний код з логікою
	main: function(){
		const daysUntilEventStart = 2; // Через скільки днів починається подія з першого відвідування
		const cookieLifetime = 7; // Через скільки днів перезапуск події


		const firstVisitDate = this.getCookie('firstVisitDate'); // Отримуємо кукі з датою першого відвідування, якщо вони є
		let result;

		if (firstVisitDate) {
			// Якщо кукі є - перевіряємо скільки днів пройшло з того моменту
			const daysSinceFirstVisit = this.daysBetweenDates(new Date(firstVisitDate), new Date());

			if (daysSinceFirstVisit >...