БлогNot. JS: простой счётчик дней от события

JS: простой счётчик дней от события

Понадобился небольшой "самообновляемый" и "самовызываемый" элемент, способный показывать, сколько дней прошло от даты (указанная дата считается первым днём). В принципе, всё делается как делалось раньше, только код современней и с проверкой ошибок.

Вот код в работе:

Switch on JS

...а ниже показан листинг файлом .html (без стандартного обрамления) в кодировке Юникода UTF-8. Из листинга видно, что весь скрипт является безымянной самовызываемой функцией-замыканием, и если аккуратно поменять аргументы вызова функции в последней строке кода, то можно получить другие счётчики.

<!DOCTYPE html>
<meta charset="UTF-8">

<style>
#info1 {
 font-size: 80%;
 color: red;
}
</style>
<p id="info1">Switch on JS</p>
<script>
 setInterval((function() {
  let id = arguments[0];
  if (id === undefined) { console.log('Передайте id элемента в функцию'); return; } 
  let elem = document.getElementById (id);
  if (!elem) { console.log('Элемент с id="'+id+'" не найден'); return; } 
  if (arguments.length !== 5) { console.log('Передайте id, строку, день, месяц, год в функцию'); return; } 
  let str = arguments[1], d = parseInt(arguments[2]), m = parseInt(arguments[3]), y = parseInt(arguments[4]);
  if (isNaN(y) || isNaN(m) || isNaN(d) || y<1582 || y>9999 || m<1 || m>12 || d<1 || d>31) {
   console.log('Передайте корректную дату в функцию'); return;
  }
  let startDate = new Date(y, m-1, d);
  let today = new Date();
  let diffDays = Math.ceil((today - startDate) / (1000 * 60 * 60 * 24));
  if (diffDays < 1) { console.log('Передайте дату раньше текущей в функцию'); return; }
  elem.innerText = str + ' ' + diffDays + ' ' + goodwordform(diffDays,'д','ень','ня','ней');
  function goodwordform(k,w,o1,o2,o5) {
   if ( (k%100>10 && k%100<20) || k%10>4 || k%10==0) w+=o5;
   else if (k%10==1) w+=o1;
   else w+=o2;
   return w;
  } 
 })('info1','"Спецоперация" продолжается',24,2,2022),60000);
 //Меняем аккуратно только аргументы из предыдущей строки: id элемента,'текст',день,месяц,год
 //Частота самообновления элемента - раз в минуту, 60000 мс = 60 сек
</script>

12.03.2022, 18:49 [1416 просмотров]


теги: javascript статистика дата

К этой статье пока нет комментариев, Ваш будет первым