registerJs( << 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; 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; _days.dataset.title = declensionNum(days, ['день', 'дня', 'дней']); _hours.dataset.title = declensionNum(hours, ['час', 'часа', 'часов']); _minutes.dataset.title = declensionNum(minutes, ['минута', 'минуты', 'минут']); // _seconds.dataset.title = declensionNum(seconds, ['секунда', 'секунды', 'секунд']); _days.textContent = days + ' ' + _days.dataset.title; _hours.textContent = hours + ' ' + _hours.dataset.title; _minutes.textContent = minutes + ' ' + _minutes.dataset.title; // _seconds.textContent = seconds < 10 ? '0' + seconds : seconds; // _seconds.textContent = _seconds.textContent + ' ' + _seconds.dataset.title; } // получаем элементы, содержащие компоненты даты const _days = document.querySelector('.timer__days'); const _hours = document.querySelector('.timer__hours'); const _minutes = document.querySelector('.timer__minutes'); const _seconds = document.querySelector('.timer__seconds'); // вызываем функцию countdownTimer countdownTimer(); // вызываем функцию countdownTimer каждую секунду timerId = setInterval(countdownTimer, 1000); JS , yii\web\View::POS_END, 'counter' );