0

我尝试使用以下代码定期更改标签的文本:

    function sleep(milliSeconds) {
        var startTime = new Date().getTime();
        while (new Date().getTime() < startTime + milliSeconds); 
    }
    function showMap() {
        var str = document.getElementById("lbPoints").firstChild.nodeValue;
        var lbl = document.getElementById("my");
        var strs = str.split("-");
        var millisecondsToWait = 500;

        for (var i = 0; i < strs.length-1; i++) {
            lbl.innerHTML = strs[i];
            sleep(500);
        }     
    }

我的“str”和“strs”是对的。代码有效,但等待 5 秒并将 strs 中的最终字符串打印到屏幕上,仅此而已。我可以做些什么来定期更改它?

4

2 回答 2

3

这不是你睡觉的方式。在任何语言中重复测试直到某个日期是正确的。

改为这样做:

function showMap() {
    var str = document.getElementById("lbPoints").firstChild.nodeValue;
    var lbl = document.getElementById("my");
    var strs = str.split("-");
    var millisecondsToWait = 500;
    var i=0;
    var interval = setInterval(function(){
        if (i==strs.length-2) clearInterval(interval); 
        lbl.innerHTML = strs[i++];
    }, millisecondsToWait);   
}

示范

这使用setInterval重复调用一个函数,并在数组末尾使用clearInterval来停止调用该函数。

于 2013-01-08T18:26:49.067 回答
2

只需使用setInterval,这就是它的用途。从文档中:

重复调用函数或执行代码片段,每次调用该函数之间有固定的时间延迟。

于 2013-01-08T18:25:42.140 回答