在javascript / jquery中反复在特定时间后添加div标签

时间:2013-09-23 13:29:47

标签: javascript jquery

我需要添加10个div标签到另一个,但我需要等待随机时间才能附加每个标签,如下所示:

function start()
{
      for (var i= 0; i< 10; i++)
      {
          var time = generateRandomWaitingTime();
          sleep(time);
          $('#div1').append('<div> div num' + i + '</div>');
      }
}

我试着实现自己的睡眠(时间);功能类似here,但它不能与我一起工作,因为它挂起任何页面事件,直到等待(时间)结束

3 个答案:

答案 0 :(得分:1)

您应该使用setTimeoutclosure

//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/

更新

生活演示:http://jsfiddle.net/JaR34/1/

答案 1 :(得分:1)

setTimout()似乎正是您正在寻找的。

答案 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/