我正在尝试创建一个简单的动画.长话短说,我有一个20个小div和一个div之外的列表.我想在当时的大div中显示五个小div.理想情况下,我会每5秒获得一组接下来的5个div.
我正在使用
jquery ajax函数来创建小div,这里是代码:
$(document).ready(function(){
var amount=0;
$.ajax({
type: "GET",
url: "SampleServiceIncidentList.xml",
dataType: "xml",
success: function(xml){
//creates divs within GadgetMain div, works fine.
});
amount = $("#gadgetMain").children().size(); //counts how many small divs there are
$("#testText").append("amount of children:"+amount); //and displays it in a test field
divideFeed();
}//close success
}); //close $.ajax(
function divideFeed(){ //divides the set of small divs into groups
var limit = 5;
var pagesNo = Math.ceil((amount/limit));
var minimum=0;
var maximum;
var i=0;
while (i<pagesNo)
{
minimum= i*limit;
maximum=minimum+limit;
//
// PROBLEM HERE
//
populate(minimum, maximum);
i++;
}
}
function populate(minimum, maximum){
$("#gadgetMain div").addClass('hidden'); //hides all small divs
$("#testText").append('<br/>min: '+minimum+' max: '+maximum); //prints current group of divs (0-5; 5-10 etc)
$("#gadgetMain div").slice(minimum,maximum).removeClass('hidden');
}
});
所以,问题是我不能让它等待5秒钟来显示我感兴趣的一组div.我知道它正确地划分了div – 当我提醒最小值和最大值时,它改变了内容每当我关闭警报时,外部div.
但我找不到暂停功能的方法.
我会非常感谢一些帮助,这让我很生气
最佳答案 你不想暂停这个功能;相反,您希望将控制权交还给浏览器并让它在一段时间后回拨给您.
window.setTimeout
功能就是这样做的. (还有相关的
window.setInterval
,但我通常更喜欢setTimeout.)
它需要一些心理逻辑反转,但它非常像是在进行Ajax调用 – 你需要一些东西,然后放手让浏览器在你得到它时给你回电话.
例如:
function doSomething(x) {
runner();
function runner() {
console.log("x = " + x);
--x;
if (x > 0) {
window.setTimeout(runner, 1000);
}
}
}
doSomething(10);
……从每秒一次减少到10次. doSomething几乎立即返回,但是跑步者每秒都会被召回一次,直到它停止重新安排自己.