интегрировать таймер - PullRequest
       27

интегрировать таймер

0 голосов
/ 13 марта 2012

Я пытаюсь добавить таймер обратного отсчета в мой код. Мой текущий код ведет обратный отсчет, и после того, как таймер достигает 0, он отображает информацию о новостях в div. Весь этот процесс будет продолжаться до тех пор, пока страница не будет закрыта, но я бы хотел добавить функцию остановки. Это означает, что как только этот код будет выполнен 10 раз с использованием таймера обратного отсчета, он полностью остановится. Я попытался сделать это с переменной session, но она не считается от 1 до 10. Она начинается с 0, а затем случайным образом поднимается до 67, затем 210 425 и так далее. Как я могу выполнить таймер обратного отсчета с 1 до 10, а затем остановить скрипт?

var cycle = 0;
var session = 0;

function countdown() {
    var min = 60 * 10;
    var max = 60 * 30;
    return Math.floor(Math.random() * max) + min;
}

function search() {
    $.getJSON('terms.php?json', function(data) {
        $('#news_updates').attr("src", data);
    });
}


function update() {
    if (session === 10) {
        alert("done");
    }
    if (cycle === 0) {
        cycle = countdown();
        search();
        $('#countdown').html('<img src="loading.gif" alt="loading picture"/>');
        $('#countup').html(session);

    } else {
        var minutes = Math.floor(cycle / 60);
        var seconds = (cycle % 60);

        if (seconds < 10) {
            seconds = "0" + seconds;
        }

        $('#countdown').html(minutes + ':' + seconds);
        cycle--;
    }
    session++;
    setTimeout('update()', 1000);
}

1 Ответ

0 голосов
/ 13 марта 2012

Вместо:

setTimeout('update()', 1000);

попробуйте это:

setTimeout(update, 1000);

Вот jsFiddle для этой части:

Я также добавил возврат в if(session === 0) { ... }, так что он полностью останавливается после 10 прогонов (т.е. не запускать еще один setTimer и повторять больше, чем ожидалось).

...