<select name="cities" id="select">
<option value="Summer">Лето</option>
<option value="Spring">8 марта</option>
<option value="Autumn">1 сентября</option>
</select>
<div class="timer" id="timer">
</div>
let tickerId;
let select;
let resultDiv;
function declensionNum(num, words) {
return words[
num % 100 > 4 && num % 100 < 20
? 2
: [2, 0, 1, 1, 1, 2][num % 10 < 5 ? num % 10 : 5]
];
}
function calc(yyyy, mm, dd) {
const deadline = new Date(yyyy, mm, dd);
const diff = deadline - new Date();
const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0;
const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0;
const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0;
const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0;
let result = "Осталось: ";
result += days < 10 ? "0" + days : days;
result += " ";
result += declensionNum(days, ["день", "дня", "дней"]);
result += " ";
result += hours < 10 ? "0" + hours : hours;
result += " ";
result += declensionNum(hours, ["час", "часа", "часов"]);
result += " ";
result += minutes < 10 ? "0" + minutes : minutes;
result += " ";
result += declensionNum(minutes, ["минута", "минуты", "минут"]);
result += " ";
result += seconds < 10 ? "0" + seconds : seconds;
result += " ";
result += declensionNum(seconds, ["секунда", "секунды", "секунд"]);
resultDiv.innerText = result;
}
function countdownTimer() {
switch (select.value) {
case "Autumn":
calc(2023, 09, 01);
break;
case "Spring":
calc(2023, 03, 08);
break;
case "Summer":
calc(2023, 06, 01);
break;
}
}
function onDomLoaded() {
tickerId = setInterval(countdownTimer, 1000);
select = document.getElementById("select");
resultDiv = document.getElementById("timer");
select.addEventListener("change", (event) => {
console.log(event.target.value);
});
}
document.addEventListener("DOMContentLoaded", onDomLoaded);
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.