jQuery sleep in each()

ne0hype

Erfahrenes Mitglied
Hi Leute,

ich verzweifel langsam....

Ich habe eine XML Datei die ich jQuery einlese und dann mit each() durchiteriere. Nun will ich die Iteration ein bisschen verlangsamen (es soll eine Slideshow werden). Doch setTimeOut() bringt nichts.... Bitte helft mir....

Hier der Code:

Code:
$(document).ready(function(){

	$.post("message.xml", function(xml){
	
		$("message",xml).each(function foo(id) {
		
			message = $("message",xml).get(id);
			as = setTimeout("nix()", 10000);
			$("#messagewindow").prepend($("text",message).text()+"<br /><br>");	
		
		});
	
	});
	
});

function nix(){
}
 
Hi,

setTimeout() ist keine sleep-Funktion, die die Scriptausführung anhält. Das bewirkt nur, dass "nebenbei" nach 10 Sekunden Deine Funktion nix() ausgeführt wird.

Du müsstest Dir eine Funktion schreiben, die das zu iterierende Objekt als Parameter bekommt, etwas mit dem ersten Element anstellt und sich dann selbst über setTimeout() mit dem um das schon bearbeitete Element verkürzte Objekt aufruft. Mit einem Array sähe das ungefähr so aus:

Javascript:
function slideShow(items) {
   if(items.length > 0) {
      display($items[0]); // was auch immer Du mit den Elementen tun willst
      items.shift();
      setTimeout(function() { slideShow(items); }, 10000);
   }
}

LG
 
Zuletzt bearbeitet von einem Moderator:
Zurück