我需要添加10个div标签到另一个,但我需要等待随机时间才能附加每个标签,如下所示:
function start()
{
for (var i= 0; i< 10; i++)
{
var time = generateRandomWaitingTime();
sleep(time);
$('#div1').append('<div> div num' + i + '</div>');
}
}
我试着实现自己的睡眠(时间);功能类似here,但它不能与我一起工作,因为它挂起任何页面事件,直到等待(时间)结束
答案 0 :(得分:1)
您应该使用setTimeout
和closure:
//closure
var addElement = function(i){
return function(){
$('#div1').append('<div> div num' + i + '</div>');
};
};
function start() {
for (var i = 0; i < 10; i++) {
var time = generateRandomWaitingTime();
setTimeout(addElement(i), time);
}
}
生活演示:http://jsfiddle.net/JaR34/
答案 1 :(得分:1)
setTimout()似乎正是您正在寻找的。 p>
答案 2 :(得分:0)
试试这个:
var elements = [1000,2000,3000,4000,5000,6000,7000];
function generateRandomWaitingTime(){
//will give you random index
var index = Math.floor((Math.random()*elements.length));
return (elements[index]);
}
function appendDiv(i){
var time = generateRandomWaitingTime();
setTimeout(function () {
$('#div1').append('<div> div num' + i + '</div>');
}, time);
}
for (var i = 0; i < 10; i++) {
appendDiv(i)
}
在这里工作小提琴:http://jsfiddle.net/6neFA/1/