Может не показаться ClearInterval на эту функцию?Часы отсчитывают 2, потом 3, потом 4 - PullRequest
0 голосов
/ 11 июля 2011

У меня возникла проблема, когда я думаю, что интервальные функции составляются, из-за чего мой счетчик начинает обратный отсчет на 2, затем на 3, а затем на 4, когда он должен считать до 1.

Вот мой код:

s = 0;
function deconInterval(passedObj, startTime) {


if(!seconds) {  
    seconds = (startTime*60 - 1);
    s = seconds;
}

minVar = Math.floor(s/60); 
secVar = s % 60;

if(secVar < 10) { 
    zeros = '0';
} else {
    zeros = '';
}

s--;
    passedObj.html(minVar +':'+zeros+ '' +secVar);
}

$('button').click(function() {


    if($(this).html() == 'Reload') {
        alert('Resetting Cards');
        window.location.reload()
    }

    $(this).html('Reload');


    intval = setInterval(displayTime, 60000);
    $(function(){
        $('li.item').map(function(){
            var _this = $(this);
            setTimeout(function(){
                $('.timeleft').remove();            
                $('li.item').removeClass('highlighted');
                _this.addClass('highlighted');

        timeval = _this.next().attr('data-time') - (_this.attr('data-time'))

        _this.prepend('<div class="timeleft">'+(timeval)+':00</div>');

        seconds = ""; //reset seconds
        timetabInterval = setInterval(function() { deconInterval(_this.children('.timeleft'), timeval); }, 1000);


            },(Number(_this.attr('data-time'))*60000));
        });
    });
});

Ответы [ 2 ]

0 голосов
/ 11 июля 2011

clearInterval - это ответ на ваш вопрос.

Вам не нужно выполнять $(function(){...}) внутри обработчика щелчков, поскольку, если вы установили обработчик щелчков, dom готов.

0 голосов
/ 11 июля 2011

Я думаю, вы не должны использовать глобальные переменные для intval, timeval and timetabInterval, иначе вы в конечном итоге присоедините больше событий к одной и той же переменной и все испортите (в вашем случае я думаю, что вы прикрепите много setInterval к timetabIntervalтаким образом, вы заканчиваете подсчет upx на 2,3 или 4)

...