Mehrere Strings zeitversetzt ausgeben

xPerience

Grünschnabel
Hi!

Leider hab ich scheinbar ein kleines Problem, denn ich würde gerne mehrere Strings zeitversetzt hintereinande ausgeben. Ich wollte dies folgendermaßen lösen:

Code:
<script type="text/javascript">
	var Zahlen = new Array('123','456','000','789');
	for(var i = 0; i < (Zahlen.length - 1); i++) {
		window.setTimeout("document.write(Zahlen[i]+'<br>')", 1000);
	}
</script>

Leider werden die einzelnen Strings die per document.write ausgegeben werden immer an der selben Stelle ausgegeben oder die Seite wird jeweils neu geladen. Zudem hört der Browser nicht auf die Seite zu laden.

Vielleicht kann mir ja einer von euch da weiterhelfen. Kann ja nicht so schwierig sein :) Ich kenn' mich leider noch nicht all zu gut aus.

Vielen Dank!
 
document.write funktioniert nur, solage das Dokument vom Borwser noch nicht vollständig geladen wurde. Versuch es mal so:
HTML:
<script type="text/javascript">
var Zahlen = new Array('123','456','000','789');
for(var i = 0; i < (Zahlen.length - 1); i++) {
     window.setTimeout("document.getElementById('Ziel').innerHTML ="+ Zahlen[i] +" +'<br>' ", 1000); 
} </script>

<div id="Ziel">&nbsp;</div>
 
Hi!

Vielen Dank erstmal :)

Leider klappt das noch nicht ganz. Er gibt jetzt grundsätzlich 0 aus, egal was ich als Wert für document.getElementById('Ziel').innerHTML angebe :/


//edit:

Bin schon weitergekommen :) Danke! Schreibe gleich nochmal etwas.

//edit2:

So läuft es schon einigermaßen:

Code:
	<script type="text/javascript"> 
		var Zahlen = new Array('123','456','000','789');
		for(var i = 0; i < (Zahlen.length - 1); i++) {
			window.setTimeout("document.getElementById('Ziel').innerHTML = Zahlen[i] + '<br>'", 1000);
		}
	</script>

Nur soll natürlich der neue Wert an den alten Inhalt vom div angehängt werden.

Code:
	<script type="text/javascript"> 
		var Zahlen = new Array('123','456','000','789');
		for(var i = 0; i < (Zahlen.length - 1); i++) {
			window.setTimeout("document.getElementById('Ziel').innerHTML = document.getElementById('Ziel').innerHTML + Zahlen[i] + '<br>'", 1000);
		}
	</script>


gibt aber leider nur


aus.
 
Zuletzt bearbeitet:
Das liegt daran, dass zum Zeitpunkt an dem das setTimeout() ausgeführt wird die for-Schleife schon ganz durchgelaufen ist. Es hatte schon einen Sinn, so wie ichs unrsprünglich geschrieben habe, bin anscheinend nur ein wenig mit den Anführungszeichen durcheinander gekommen.

So sollte es gehen, aber auch das habe ich nicht getestet:
Code:
window.setTimeout("document.getElementById('Ziel').innerHTML +='"+ Zahlen[i] +"<br>'", 1000);

Könnte aber auch sein, dass mehere Timeouts gleichzeitig nicht ausgeführt werden. Dann müsstest du über setInterval gehen und im Intervall erst die i-Variable um eins erhöhen.
 
Zuletzt bearbeitet:
Vielen Dank :) Dank dir habe ich das jetzt soweit hinbekommen ;) Musste allerdings jetzt setInterval benutzen:

Code:
<script type="text/javascript"> 
var aktiv = window.setInterval("Farbe()", 1000);
var Zahlen = new Array('123','456','000','789');
var i = 0;
function Farbe () {
  document.getElementById('Ziel').innerHTML += Zahlen[i] + '<br>';
  i = i + 1;
  if (i > 3)
    window.clearInterval(aktiv);
}
</script>


Danke!
 

Neue Beiträge

Zurück