Как сделать задержку между последующим добавлением html в div, используя Jquery или javascript?
В моем приложении я сталкиваюсь с некоторой проблемой с настройкой задержки при добавлении HTML в div в массиве. (в следующий раз). Пожалуйста, смотрите следующий код. 10 раз я добавляю текст " Hello World" в div. Я хочу некоторую задержку после каждого добавления.
function someFunction(){
for(var i=0;i<10;i++)
{
addElement();
}
}
function addElement()
{
$('.SomeDiv').append('<div>Hello World</div>');
}
Я пытался так:
function someFunction(){
for(var i=0;i<10;i++)
{
setTimeOut(function(){
addElement();
},1000);
}
}
Но это не работает. Как я могу это сделать.
5 ответов
Попробуй это:
function someFunction() {
for (var i = 0; i < 10; i++) {
setTimeout(function(){
addElement();
}, 1000 * i);
}
}
function addElement() {
$('.SomeDiv').append('<div>Hello World</div>');
}
Заметка 1000 * i
увеличение тайм-аута, делает свое дело.
setInterval
или же setTimeout
лучший способ сделать это, но вы также можете использовать jQuery delay()
:
for(var i=0;i<10;i++)
{
$('.SomeDiv').delay(i * 1000).queue(function (next) {
$(this).append('<div>Hello World</div>');
next();
});
}
jsFiddle
Вы можете попробовать использовать setInterval...
var count = 0;
var placeHolder = setInterval(function() {
addElement();
count = count + 1; //i forget if ++ works...
if(count > 9)
clearInterval(placeHolder);
}, 1000);
Некоторое обновление вашей функции:
function someFunction(){
for(var i=0;i<10;i++)
{
setTimeout(function(){
addElement();
}, i*1000 );
}
}
Помните, что при создании многих setTimeout
s это влияет на производительность.
JSFiddle: http://jsfiddle.net/CSPbb/
Вы хотите использовать setInterval
не setTimeout
, setInterval
выполнит функцию, подождет N миллисекунд, затем выполнит ее снова. setTimeout
просто задерживает N миллисекунд, затем выполняет один раз.
var count = 0;
var interval = setInterval(function () {
addElement();
count++;
if (count >= 10) {
clearInterval(interval);
}
}, 1000);