使用JavaScript递增一个数字将返回一个错误

使用JavaScript递增一个数字将返回一个错误,javascript,Javascript,结果是:“数字为0”,但不递增。为什么? var count = { digit: 0, increment: function() { setInterval(function() { count.digit++; }, 500); if (count == 10) { count.increment = null; } } }; document.write

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

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();
…而新字符串不是最初形成它的两个字符串组合的实时更新版本

即使是,那么
document.write
也会获取一个字符串,将其表示为HTML,然后将其添加到文档中,这样也不会实时更新它

您需要使用DOM方法来修改HTML文档,而不是字符串。WSC很好地介绍了如何使用DOM操作HTML:

设置
count时还有另一个问题。间隔
null
不会停止每半秒递增计数器的函数,因为:

  • 您没有覆盖每半秒调用一次的函数
  • 将对函数的引用替换为其他引用不会阻止该函数的存在,除非对该函数的所有引用都被覆盖,并且setInterval将维护该引用
  • 您需要保留setInterval中的返回值,并使用它来保存

    …而新字符串不是最初形成它的两个字符串组合的实时更新版本

    即使是,那么
    document.write
    也会获取一个字符串,将其表示为HTML,然后将其添加到文档中,这样也不会实时更新它

    您需要使用DOM方法来修改HTML文档,而不是字符串。WSC很好地介绍了如何使用DOM操作HTML:

    设置
    count时还有另一个问题。间隔
    null
    不会停止每半秒递增计数器的函数,因为:

  • 您没有覆盖每半秒调用一次的函数
  • 将对函数的引用替换为其他引用不会阻止该函数的存在,除非对该函数的所有引用都被覆盖,并且setInterval将维护该引用

  • 您需要保留setInterval的返回值并将其用于。

    您还需要在setInterval中包含if语句
    count.digit==0

    在我看来,这有点干净

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

    您还需要在setInterval中包含if语句
    count.digit==0

    在我看来,这有点干净

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

    我认为
    count==10
    部分也必须进入区间,我认为
    count==10
    部分也必须进入区间