为什么这个简单的JavaScript递增和递减方法不起作用?

时间:2011-03-20 11:15:28

标签: javascript setinterval

(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 个答案:

答案 0 :(得分:4)

您的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();
})();

答案 1 :(得分:2)

setInterval将每500秒调用一次该函数。直到你停止它才会停止。您可以在Stop setInterval call in JavaScript

了解有关停止此操作的详情

答案 2 :(得分:2)

这不是一个错误,它是一个功能;-)。 setInterval()在给定间隔(500毫秒)的循环中运行给定函数。有关详细信息,请参阅此article