在JavaScript中设置循环执行的延迟

时间:2013-05-09 06:54:04

标签: javascript asp.net web

我需要在JavaScript中执行for循环时设置延迟。

这是我的代码:

function myFunction1() {

        var list = document.getElementById('SomeList');
        var items = list.getElementsByTagName('li');

        for (var i = 0; i < items.length; ++i) {

            setTimeout(delayLoop, 1500);
        }
    }
function delayLoop() {
        alert('Hello');
    }

将“alert('Hello')”代码添加到delayLoop函数后,我注意到setTimeout函数仅在执行myFunction1()后显示警告框。

如何使用setTimeout将每个循环通过项目集合减慢到1500毫秒?

2 个答案:

答案 0 :(得分:1)

也许这有帮助

function pause(ms) {
    ms += new Date().getTime();
    while (new Date() < ms){}
} 

答案 1 :(得分:0)

您可能必须在此处使用回调

var list = document.getElementById('SomeList');
var items = list.getElementsByTagName('li');
var i = 0;

var myFunction1 = function() {
    if ( i < items.length ) {
         // Do some code with items[i]
         i++;
         setTimeout(myFunction1, 1500);
    } else { 
         // No more elements
         return;
    }
}

这样你的myFunction1将每1.5秒执行一次。