jQuery(document).ready(function($) { // Массив с информацией о каждом таймере var timers = []; // 1) Ищем все таймеры (span внутри .tournaments-preview-card__timer) $('.tournaments-preview-card__timer span').each(function() { var $span = $(this); var originalTime = $span.text().trim(); // "00:04:56:09" и т.п. // Сохраним это значение в data-атрибут (или просто в массив) $span.attr('data-original-time', originalTime); // Парсим строку "DD:HH:MM:SS" -> в totalSeconds var parts = originalTime.split(':'); // parts[0] = DD (дни), parts[1] = HH (часы), parts[2] = MM (мин), parts[3] = SS (сек) var d = parseInt(parts[0], 10); var h = parseInt(parts[1], 10); var m = parseInt(parts[2], 10); var s = parseInt(parts[3], 10); var totalSeconds = d * 86400 + h * 3600 + m * 60 + s; // Добавляем объект таймера в общий массив timers.push({ $element: $span, totalSeconds: totalSeconds, originalTotalSeconds: totalSeconds }); }); // 2) Функция, уменьшающая время на 1 секунду и обновляющая вывод function updateTimers() { for (var i = 0; i < timers.length; i++) { var timer = timers[i]; // Уменьшаем общее число секунд timer.totalSeconds--; // Если дошли до нуля – сбрасываем к исходному значению (бесконечный цикл) if (timer.totalSeconds < 0) { timer.totalSeconds = timer.originalTotalSeconds; } // Считаем, сколько теперь осталось дней/часов/минут/секунд var d = Math.floor(timer.totalSeconds / 86400); var remainder = timer.totalSeconds % 86400; var h = Math.floor(remainder / 3600); remainder = remainder % 3600; var m = Math.floor(remainder / 60); var s = remainder % 60; // Форматируем в двухзначный вид, чтобы, например, 4 минуты -> "04" var dd = String(d).padStart(2, '0'); var hh = String(h).padStart(2, '0'); var mm = String(m).padStart(2, '0'); var ss = String(s).padStart(2, '0'); // Собираем новую строку "DD:HH:MM:SS" var display = dd + ':' + hh + ':' + mm + ':' + ss; // Записываем в span timer.$element.text(display); } } // 3) Запускаем интервал, обновляем каждую секунду setInterval(updateTimers, 1000); });