我需要在相互添加之间添加等待1秒的iframe,而不是一次添加所有iframe。试着没有运气,它只是立即追加它。
var i = 0;
function appendSomeItems() {
for (var j=0; j<50; i++, j++) {
$('body').append('<iframe src="http://www.example.com"></iframe>').delay(1000);
}
if (i < 50) window.setTimeout(appendSomeItems, 0);
}
appendSomeItems();
这样做的正确方法是什么?感谢。
答案 0 :(得分:7)
for (var j = 0; j < 50; j++) {
setTimeout(function() {
$('body').append('<iframe src="http://www.example.com"></iframe>');
}, j * 1000); // each call is scheduled to run after j seconds
}
ps:在建立所需的呼叫数量后,不要使用非常大的数字或使用setInterval与单个功能,计数器和清除定时器,或者setTimeout
当前呼叫结束时的下一个呼叫定时功能。在最后一次通话时跳过这一步。
答案 1 :(得分:1)
另一个选项是使用以下代码,在上一个代码完成后添加新的超时。所以你永远不会有多个超时等待。
var start=0;
var max=50;
function appendSomeItems(i) {
$('body').append('<iframe src="http://www.example.com"></iframe>');
if(i<max){
setTimeout(function(){appendSomeItems(i+1)},1000);
}
}
appendSomeItems(start);
答案 2 :(得分:0)
jQuery's delay method用于制作动画。
您需要做的是每秒触发一次方法。为了做到这一点,你可以写:
var itemsToAppend = 50;
function appendSomeItems()
{
$('body').append('<iframe src="http://www.example.com"></iframe>');
if (itemsToAppend--) // if 0 skips
setTimeout(appendSomeItems, 1000);
}
appendSomeItems();