Нужна помощь - таймер обратного отчета часов с указанием дат начала и конца

почему то зависло на До конца акции 0:0:0 и все и изменилась надпись в реальном времени сразу на Акция закончена, а появилась после перезагрузки браузера.а паралельный тамер какоторый с другим ID умер вообще тоесть у меня много таймеров на одной странице с разными ID






Это я делаю для под категории webasyst 309 вод код root_categories.html

 
Последнее редактирование:
почему то зависло на До конца акции 0:0:0 и все и изменилась надпись в реальном времени сразу на Акция закончена, а появилась после перезагрузки браузера.
попробуйте хоть немного вникнуть в код, а не тупо копировать..
HTML:
            if( 0 >= seconds_left || start_date > current_date ){ // приехали

                timer_container560.html( 'Акция закончена' );
                clearInterval( counter );
            }


а паралельный тамер какоторый с другим ID умер вообще тоесть у меня много таймеров на одной странице с разными ID
и правильно, это html узлов для таймеров у вас несколько, а экземпляр таймера сейчас один - counter.. т.е. объявите его хоть сто раз, сброс сработает сразу для всех..
 
Последнее редактирование:
и правильно, это html узлов для таймеров у вас несколько, а экземпляр таймера сейчас один - counter.. т.е. объявите его хоть сто раз, сброс сработает сразу для всех..

как тогда с этим быть?
 
самое простое и в лоб решение (кто-нибудь, пожалуйста, избейте меня почти до смерти за этот совет!) :
var counter{/literal}{$_subcat.categoryID}{literal} = setInterval....
и соответственно
clearInterval( counter{/literal}{$_subcat.categoryID}{literal} );

ну а по-хорошему, коли у вас может быть несколько независимых счётчиков, написать нормальный класс и по необходимости создавать его экземпляры..
 
Чет не прокатило ((( что не так?

HTML:
{literal}       
<script type='text/javascript'>//<![CDATA[
$(window).load(function(){

    // текущее время
    var current_date = new Date().getTime();

    // когда начинаем
    // формат Dane( гггг, м(0 - январь), д, ч, мин, сек )
    var start_date = new Date( {/literal}{if $_subcat.description2}{$_subcat.description2}{/if}{literal} ).getTime();
    // до какого времени считаем
    var target_date = new Date( {/literal}{if $_subcat.description3}{$_subcat.description3}{/if}{literal} ).getTime();

    var timer_container{/literal}{$_subcat.categoryID}{literal} = $( '#timer_container{/literal}{$_subcat.categoryID}{literal}' );

    if( current_date < start_date ){

        timer_container{/literal}{$_subcat.categoryID}{literal}.html( '' );
    }
    else if( current_date > target_date ){

        timer_container{/literal}{$_subcat.categoryID}{literal}.html( '' );
        clearInterval( counter{/literal}{$_subcat.categoryID}{literal} );
    }
    else{

        var counter{/literal}{$_subcat.categoryID}{literal} = setInterval(function () {

            var hours_remaining, minutes_remaining;

            // текущее время
            var current_date = new Date().getTime();

            // сколько секунд осталось
            var seconds_left = parseInt( (target_date - current_date) / 1000 );

            hours_remaining = parseInt( seconds_left / ( 60 * 60 ) );
            seconds_left = seconds_left % ( 60 * 60 );

            minutes_remaining = parseInt( seconds_left / 60 );
            seconds_left = seconds_left % 60;

            timer_container{/literal}{$_subcat.categoryID}{literal}.html ( 'До конца акции <b>' + hours_remaining + ':' + minutes_remaining + ':' + seconds_left + '</b> ' );

            if( 0 >= seconds_left || start_date > current_date ){ // приехали

                clearInterval( counter{/literal}{$_subcat.categoryID}{literal} );
            }

        }, 1000 );
    }

});//]]> 

</script>
      {/literal}
 
а что не прокатило?.. покажите результирующий код..
 


вот поставь таймер и посмотри что он выдаст когда остановиться время выйдет =(
 
Последнее редактирование:
правильно он всё выдаёт.. только счётчики не одновременно останавливаются, а как дойдут до нуля секунд ("0 >= seconds_left" видно же, правда ; )) )..

всё от того, что кто-то свершено не пытается понять что за код ему подсовывают, а бездумно копипастит.. ;Р
HTML:
    // текущее время
    var current_date = new Date().getTime();
    // когда начинаем
    // формат Dane( гггг, м(0 - январь), д, ч, мин, сек )
    var start_date = new Date( 2013, 9, 28, 11, 18, 0 ).getTime();
    // до какого времени считаем
    var target_date = new Date( 2013, 9, 30, 23, 58, 11 ).getTime();
    var timer_container560 = $( '#timer_container560' );
    if( current_date < start_date ){
        timer_container560.html( '' );
    }
    else if( current_date > target_date ){
        timer_container560.html( '' );
    }
    else{
        var counter560 = setInterval(function () {
            var hours_remaining, minutes_remaining;
            // текущее время
            var current_date = new Date().getTime();
            // сколько секунд осталось
            var seconds_left = parseInt( (target_date - current_date) / 1000),
                seconds_total = seconds_left; // копируем общее кол-во секунд, т.к. seconds_left мы будем уменьшать

            hours_remaining = parseInt( seconds_left / ( 60 * 60 ) );
            seconds_left = seconds_left % ( 60 * 60 );
            minutes_remaining = parseInt( seconds_left / 60 );
            seconds_left = seconds_left % 60;
            timer_container560.html ( 'До конца акции <b>' + hours_remaining + ':' + minutes_remaining + ':' + seconds_left + '</b> ' );

            if( 0 >= seconds_total ){ // приехали

                clearInterval( counter560 );
            }
        }, 1000 );
    }
 
Дык как быть тогда я правда не шарю в JS ваше! как быть чтобы код был валиден/? Чтобы не останавливались все а тот что выходил срок исчезал а предыдущие шли дальше!

213.png



код

 
Последнее редактирование:
смотрите внимательнее:

if( 0 >= seconds_total ){ // приехали
 
Назад
Сверху