使用JavaScript增加数字会返回错误

时间:2011-03-19 21:52:09

标签: javascript

var count = {
    digit: 0,
    increment: function() {
        setInterval(function() {
            count.digit++;
        }, 500);
        if (count == 10) {
            count.increment = null;
        }
    }
};
document.write("The number is " + count.digit);
count.increment();

结果是:“数字为0”但不增加。为什么呢?

2 个答案:

答案 0 :(得分:2)

"A string" + "another string" == "A new string"

...并且新字符串不是首先形成它的两个字符串组合的实时更新版本。

即使它是,但是document.write接受一个字符串,将其表示为HTML,然后将其添加到文档中 - 这样就不会实时更新它。

您需要使用DOM方法来修改HTML文档而不是字符串。 WSC对使用DOM操纵HTML进行了很好的介绍:http://dev.opera.com/articles/view/creating-and-modifying-html/

你有另一个问题,因为count.intervalnull设置不会停止函数每半秒递增一次计数器:

  1. 您没有覆盖每半秒调用的函数
  2. 使用其他内容替换对函数的引用不会阻止该函数存在,除非所有对它的引用都被覆盖,并且setInterval将保留引用。
  3. 您需要保留setInterval的返回值,并将其用于clearInterval

答案 1 :(得分:1)

您还需要在setInterval中使用if语句count.digit == 0

这是一个更清洁的IMO

var count = {
    digit: 0,
    increment: function() {
        var interval = setInterval(function() {
            if (++count.digit == 10)
                clearInterval(interval);
            document.write("The number is " + count.digit);
        }, 500);
    }
};
count.increment();