Почему не работает этот простой метод увеличения и уменьшения JavaScript? - PullRequest
1 голос
/ 20 марта 2011
(function() {
    var count = {
        digit: 0,
        increment: function() {
            var interval = setInterval(function() {
                if (++count.digit == 10) {
                    clearInterval(interval);
                    count.decrement();
                }
                var update = document.getElementById("liveUpdate");
                update.innerHTML = count.digit;
            }, 500);
        },
        decrement: function() {
            var interval = setInterval(function() {
                if (--count.digit == -1) {
                    clearInterval(interval);
                }
            }, 500);
        }
    };
    count.increment();
})();

Останавливается, но не падает? В чем может быть проблема?

Ответы [ 3 ]

4 голосов
/ 20 марта 2011

Ваша функция decrement никогда не обновляет вывод.Переменная - это , понижающаяся, но вы не показываете это на экране.

Попробуйте (или проверьте соответствующий JSFiddle ):

(function() {
    var update = document.getElementById("liveUpdate");
    var count = {
        digit: 0,
        increment: function() {
            var interval = setInterval(function() {
                if (++count.digit == 10) {
                    clearInterval(interval);
                    count.decrement();
                }
                update.innerHTML = count.digit;
            }, 500);
        },
        decrement: function() {
            var interval = setInterval(function() {
                if (--count.digit == -1) {
                    clearInterval(interval);
                }
                update.innerHTML = count.digit;
            }, 500);
        }
    };
    count.increment();
})();
2 голосов
/ 20 марта 2011

Это не ошибка, это особенность ;-). setInterval() запускает данную функцию в цикле с заданным интервалом (500 мс). Подробнее см. статью .

2 голосов
/ 20 марта 2011

setInterval будет вызывать функцию каждые 500 секунд.Это не остановится, пока вы не остановите это.Вы можете прочитать больше об остановке на Прекратить вызов setInterval в JavaScript

...