Скрипт обратного отсчета 
		
		
		
		Есть скрипт обратного отчета  
	Как можно сделать так что бы было возможность поставить на одну страницы разные даты (любое количество) 
<!doctype html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title></title>
  <style>
    *,
    *::before,
    *::after {
      box-sizing: border-box;
    }
    @media (prefers-reduced-motion: no-preference) {
      :root {
        scroll-behavior: smooth;
      }
    }
    body {
      margin: 0;
      font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      font-size: 1rem;
      font-weight: 400;
      line-height: 1.5;
      color: #212529;
      background-color: #fff;
      -webkit-text-size-adjust: 100%;
      -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
      display: flex;
      justify-content: center;
    }
    .timer__items {
      display: flex;
      font-size: 48px;
    }
    .timer__item {
      position: relative;
      min-width: 60px;
      margin-left: 10px;
      margin-right: 10px;
      padding-bottom: 15px;
      text-align: center;
    }
    .timer__item::before {
      content: attr(data-title);
      display: block;
      position: absolute;
      left: 50%;
      bottom: 0;
      transform: translateX(-50%);
      font-size: 14px;
    }
    .timer__item:not(:last-child)::after {
      content: ':';
      position: absolute;
      right: -15px;
    }
  </style>
  <script>
    document.addEventListener('DOMContentLoaded', function () {
      // конечная дата
      const deadline = new Date(2023, 00, 01);
      // id таймера
      let timerId = null;
      // склонение числительных
      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 countdownTimer() {
        const diff = deadline - new Date();
        if (diff <= 0) {
          clearInterval(timerId);
        }
        const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0;
        $days.textContent = days < 10 ? '0' + days : days;
        $days.dataset.title = declensionNum(days, ['день', 'дня', 'дней']);
      }
      // получаем элементы, содержащие компоненты даты
      const $days = document.querySelector('.timer__days');
      // вызываем функцию countdownTimer
      countdownTimer();
      // вызываем функцию countdownTimer каждую секунду
      timerId = setInterval(countdownTimer, 1000);
    });
  </script>
</head>
<body>
До нового года
  <div class="timer">
    <div class="timer__items">
      <div class="timer__item timer__days">00</div> 
    </div>
  </div>
До Родества 
  <div class="timer">
    <div class="timer__items">
      <div class="timer__item timer__days">00</div> 
    </div>
  </div>
До старого нового года 
  <div class="timer">
    <div class="timer__items">
      <div class="timer__item timer__days">00</div> 
    </div>
  </div>
</body>
</html>
 | 
	
		
 timers init from data-attribute 
		
		
		
		Сергей Ракипов, 
	
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <style>
        *,
        *::before,
        *::after {
            box-sizing: border-box;
        }
        @media (prefers-reduced-motion: no-preference) {
            :root {
                scroll-behavior: smooth;
            }
        }
        body {
            margin: 0;
            font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            font-size: 1rem;
            font-weight: 400;
            line-height: 1.5;
            color: #212529;
            background-color: #fff;
            -webkit-text-size-adjust: 100%;
            -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
            display: flex;
            justify-content: center;
        }
        .timer__items {
            display: flex;
            font-size: 48px;
        }
        .timer__item {
            position: relative;
            min-width: 60px;
            margin-left: 10px;
            margin-right: 10px;
            padding-bottom: 15px;
            text-align: center;
        }
        .timer__item::before {
            content: attr(data-title);
            display: block;
            position: absolute;
            left: 50%;
            bottom: 0;
            transform: translateX(-50%);
            font-size: 14px;
        }
        .timer__item:not(:last-child)::after {
            content: ':';
            position: absolute;
            right: -15px;
        }
    </style>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            let divs = document.querySelectorAll('[data-end]');
            // склонение числительных
            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 countdownTimer() {
                divs.forEach(div => {
                    let deadline = new Date(div.dataset.end);
                    const diff = deadline - new Date();
                    const days = diff > 0 ? Math.ceil(diff / 1000 / 60 / 60 / 24) : 0;
                    div.textContent = days < 10 ? '0' + days : days;
                    div.dataset.title = declensionNum(days, ['день', 'дня', 'дней']);
                })
                setTimeout(countdownTimer, 1000)
            }
            // вызываем функцию countdownTimer
            countdownTimer();
        });
    </script>
</head>
<body>
    До нового года
    <div class="timer">
        <div class="timer__items">
            <div class="timer__item timer__days" data-end="1/1/2023">00</div>
        </div>
    </div>
    До Рождества
    <div class="timer">
        <div class="timer__items">
            <div class="timer__item timer__days" data-end="1/7/2023">00</div>
        </div>
    </div>
    До старого нового года
    <div class="timer">
        <div class="timer__items">
            <div class="timer__item timer__days" data-end="1/14/2023">00</div>
        </div>
    </div>
</body>
</html>
 | 
	
		
 рони, 
	Спасибо друг :)  | 
	
		
 я понял отслеживать события с помощью атрибутов 
	 | 
	
		
 Скажите а JS способен ли находить к примеру каждый второй и четвертый четверг месяца или  первое или последнее воскресение месяца. 
	 | 
	
		
 Сергей Ракипов, 
	да)))  | 
	
		
 рони, 
	
function getTuesdays(month, year) {
    var d = new Date(year, month, 1),
        tuesdays = [];
    d.setDate(d.getDate() + (9 - d.getDay()) % 7)
    while (d.getMonth() === month) {
        tuesdays.push(new Date(d.getTime()));
        d.setDate(d.getDate() + 7);
    }
    return tuesdays;
}
var meetingTuesdays = [],
    ul = document.getElementById("list"),
    temp,
    li,
    i;
for ( i = 0; i < 12; i += 1) {
    temp = getTuesdays(i, 2023);
    meetingTuesdays.push(temp[1]);
    li = document.createElement("li");
    li.textContent = temp[1];
    ul.appendChild(li);
    meetingTuesdays.push(temp[3]);
    li = document.createElement("li");
    li.textContent = temp[3];
    ul.appendChild(li);
}
console.log(meetingTuesdays);
    </script>
Я нашел как находить сейчас попробую сделать как выводить  | 
	
		
 Сергей Ракипов, 
	http://javascript.ru/forum/misc/5135...o-mesyaca.html  | 
| Часовой пояс GMT +3, время: 10:50. |