@djienbaev97

Как зупустить таймер по окончанию?

Добрый день! У меня есть готовый таймер который работает до определенного даты, дату сам указываю. Вопрос такой как этот же таймер запускать сначала по окончанию? Например каждый понедельник до воскресенье 23:59, получается на 7 дней. После 7 дней автоматический с понедельника началась отчет и так бесконечно

<div class="cfl-time">
                        <p class="cfl-time-titl">До начало курса:</p>
                        <div class="cnfsong-time">
                            <div class="time-down">
                                <div class="time-down-pars">
                                    <span id="sday1"></span>
                                    <span id="sday2"></span>
                                    <p>күн</p>
                                </div>
                                <div class="time-down-n">
                                    :
                                </div>
                                <div class="time-down-pars">
                                    <span id="shour1"></span>
                                    <span id="shour2"></span>
                                    <p>сағат</p>
                                </div>
                                <div class="time-down-n">
                                    :
                                </div>
                                <div class="time-down-pars">
                                    <span id="sminut1"></span>
                                    <span id="sminut2"></span>
                                    <p>минут</p>
                                </div>
                                <div class="time-down-n">
                                    :
                                </div>
                                <div class="time-down-pars">
                                    <span id="ssecond1"></span>
                                    <span id="ssecond2"></span>
                                    <p>секунд</p>
                                </div>
                                <div class="clear"></div>
                            </div>
                        </div>

                    </div>


и js код:

// Set the date we're counting down to
var countDownDate = new Date('10 October 2020 21:00').getTime();
// Update the count down every 1 second
var x = setInterval(function() {
    // Get today's date and time
    var now = new Date().getTime();
    // Find the distance between now and the count down date
    var distance = countDownDate - now;
    // Time calculations for days, hours, minutes and seconds
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    // Output the result in an element with id="demo"
    var day = days.toString();
    var ln = day.length;
    var chars = day.split('');
    if(ln == 1){
        document.getElementById("sday1").innerHTML = '0';
        document.getElementById("sday2").innerHTML = chars[0];
    }else{
        document.getElementById("sday1").innerHTML = chars[0];
        document.getElementById("sday2").innerHTML = chars[1];
    }
    var hour = hours.toString();
    var ln = hour.length;
    var chars = hour.split('');
    if(ln == 1){
        document.getElementById("shour1").innerHTML = '0';
        document.getElementById("shour2").innerHTML = chars[0];
    }else{
        document.getElementById("shour1").innerHTML = chars[0];
        document.getElementById("shour2").innerHTML = chars[1];
    }
    var minut = minutes.toString();
    var ln = minut.length;
    var chars = minut.split('');
    if(ln == 1){
        document.getElementById("sminut1").innerHTML = '0';
        document.getElementById("sminut2").innerHTML = chars[0];
    }else{
        document.getElementById("sminut1").innerHTML = chars[0];
        document.getElementById("sminut2").innerHTML = chars[1];
    }
    var second = seconds.toString();
    var ln = second.length;
    var chars = second.split('');
    if(ln == 1){
        document.getElementById("ssecond1").innerHTML = '0';
        document.getElementById("ssecond2").innerHTML = chars[0];
    }else{
        document.getElementById("ssecond1").innerHTML = chars[0];
        document.getElementById("ssecond2").innerHTML = chars[1];
    }
    // document.getElementById("demo").innerHTML = days + "d " + hours + "h "
    // + minutes + "m " + seconds + "s ";
    // If the count down is over, write some text
    if (distance < 0) {
        clearInterval(x);

    }
}, 1000);
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
@alexalexes
Создайте функцию получения времени следующего понедельника
function init_counter_time()
{
var d = new Date();
d.setDate(d.getDate() - (d.getDay() + 6 ) % 7 + 7);
d.setHours(0);
d.setMinutes(d.getTimezoneOffset()); // компенсируем смещение временной зоны у пользователя.
d.setSeconds(0);
d.setMilliseconds(0);
return d.getTime(); // обратите внимание, что время извлекается по таймзоне +0000!!!
}

И используйте при инициализации:
// var countDownDate = new Date('10 October 2020 21:00').getTime();
var countDownDate = init_counter_time();

и при обнулении счетчика:
if (distance < 0) {
       // clearInterval(x);
      countDownDate = init_counter_time();
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы