добавлять теги div после определенного количества раз в javascript / jquery

0

Мне нужно добавить append 10 div-тегов к другому, но мне нужно подождать случайное время до добавления каждого из них, примерно так:

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

Я пытался реализовать свой собственный сон (время); как здесь, но он не работал со мной, поскольку он висит на любом событии страницы до окончания ожидания (времени)

Теги:

3 ответа

1

setTimout() Кажется, именно то, что вы ищете.

  • 0
    на самом деле setTimeout () не выполняется последовательно, как sleep () .. setTimeout запустится, но не будет удерживать цикл for от продолжения до истечения времени.
1

Вы должны использовать setTimeout и закрытие:

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

  • 2
    Вы должны использовать закрытие. stackoverflow.com/questions/5226285/...
  • 0
    @ не определено отредактировано. Спасибо за указание на это.
Показать ещё 3 комментария
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/

  • 0
    попытаться сделать массив элементов иметь только одно значение 2000 для примера. .. страница будет ждать 2 сек. и все div будут добавлены одновременно, мне нужно, чтобы каждый div был добавлен через 2 сек. из предыдущих

Ещё вопросы

Сообщество Overcoder
Наверх
Меню