定期更改标签文本Javascript

时间:2013-01-08 18:23:58

标签: javascript sleep

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

    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中的最终字符串打印到屏幕上,而不是其他内容。我该怎么做才能定期更改它?

2 个答案:

答案 0 :(得分: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);   
}

<强> Demonstration

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

答案 1 :(得分:2)

只需使用setInterval,这就是它的用途。来自documentation

  

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