setTimeout只运行一次(使用函数ref)

时间:2016-06-13 14:06:58

标签: javascript

这是一个codepen:CODEPEN

问题是setTimeout只运行一次:

var inter = document.getElementById("interval");
var i = 1;

window.setTimeout(function () {
    i++;
    inter.innerHTML = "Interval: " + i;
}, 500)

我已经检查了其他关于SO的问题,人们正在调用它们的函数而不是传递函数引用:

window.setTimeout(myFunc(), 1000);

但是我正在传递一个函数ref,所以我必须做错其他的事情。有人可以帮我找一下它是什么吗?

编辑:谢谢!我简直不敢相信我把这两个混在了一起!

3 个答案:

答案 0 :(得分:2)

setTimeout只能运行一次。

改为使用setInterval

var inter = document.getElementById("interval");
var i = 1;

window.setInterval(function () {
    i++;
    inter.innerHTML = "Interval: " + i;
}, 500)

答案 1 :(得分:0)

如果你想一遍又一遍地使用setInterval

做同样的事情
var inter = document.getElementById("interval");
var i = 1;

window.setInterval(function () {
  i++;
  inter.innerHTML = "Interval: " + i;
}, 500)

答案 2 :(得分:0)

使用setTimeout(),例如从1到100,你可以这样做:

var inter = document.getElementById("interval");
var i = 1;

function run() {
    inter.innerHTML = i;
    window.setTimeout(function() {
        if(i < 101) { // Or without the if-statement to run it infinite
            run();
        }
        i += 1;
    }, 50);
}

run();