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 に答える