JavaScript Array mit timeout ?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anweisung
array
code
ersten url
fenster
funktion
helfen
http
intervall
letzte url
mache
objekt
pflicht
sekunde
status
stopp
unterschied
url
vorstellung
-
Hi,
ich möchte für Vorstellung einiger Seiten ein PopUp öffnen, in dem für 10 Sekunden jeweils eine URL aus einem Array angezeigt wird
leider klappt das nicht, es öffnet sich zwar ein Popup mit der ersten URL im Array, aber dann gehts nicht weiter
was mache ich falsch?
so gehts schonmal nicht:
var liste1 = new Array( "http://aaaaaaaaaaaaa.tld", "http://bbbbbbbbbb.tld", "http://cccccccccccccccc.tld", "http://dddddddd.tld" ); var anz1 = (liste1.length); function zeigeseite (myurl) { fensterlein = window.open(myurl, "Fenster", "width=760,height=600,status=yes,scrollbars=yes,resizable=yes"); focus(fensterlein); } for (z=0; z<anz1; z++) { setTimeout('zeigeseite(liste1[z]);', 10000); }
also es soll nach 10 Sekunden jeweils im gleichen Popup-Fenster eine neue URL (aus dem Array) angezeigt werden
solange bis die Liste durch ist, so dass dann am Ende die letzte URL aus dem Array im Popup ist.
(wo dann ein Link zum fenster schliessen rein kommt) ... ???
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hio gamesfun,
Ich habe bein lesen des Quelltextes eine mögliche Ursahe gefunden:
for (z=0; z<anz1; z++) { setTimeout('zeigeseite(liste1[z]);', 10000); }
Dies bewirkt das _alle_ (gleichzeitig) Urls in diesem nach 10 sec in dem Popup 'Fenster' angezeigt werden - doch kan ja immer nur eine url in einem Popup geladen werden. Für dieses Problem würde ich dir folgende Lösungen empfehlen:
1. Möglichkeit:
for (z=0; z<anz1; z++) { window.setTimeout('zeigeseite(liste1[z]);', (10000 * (z + 1))); }
(10000 * (z + 1)) bewikt da das die 1. url nach 10 seck, die 2. nach 20 sec, usw. aufgerufen wird.
2. Möglickeit. (etwas komplizierter )
var naechste_url = 0; var liste1 = new Array( "http://aaaaaaaaaaaaa.tld", "http://bbbbbbbbbb.tld", "http://cccccccccccccccc.tld", "http://dddddddd.tld" ); var anz1 = (liste1.length); function zeigeseite () { var myurl = liste1[naechste_url]; fensterlein = window.open(myurl, "Fenster", "width=760,height=600,status=yes,scrollbars=yes,resizable=yes"); focus(fensterlein); if (naechste_url > anz1) { naechste_url++; } else { window.clearInterval(interval1); naechste_url = 0; } } var interval1 = window.setInterval('zeigeseite();', 10000)
Hier wird nur ein Intervall gestartet, wodurch alle 10 sec eine andere URL ins Popup geladen wird. wenn die letzte URL geladen wurde wird der Intervall gestoppt. Im übrigen habe ich das 'window.' ergänst - bin mir nicht sicher aber ich denke es wäre Pflicht.
Zum unterschied von 'setTimeout()' und 'setInterval()':
http://de.selfhtml.org//javascript/objekte/window.htm#set_timeout
http://de.selfhtml.org//javascript/objekte/window.htm#set_interval
Ich hoffe ich konnte dir helfen
[edit]: habe das intervall bei Möglickeit 2 'stopp-bar' gemacht
Beitrag zuletzt geändert: 5.7.2009 11:54:30 von lars-eichhorn -
oder du schreibst eine rekursive funktion, die zum einen das popup aufruft, zum anderen wieder sich selbst:
function popup(ind){ *hier anweisung für popup, die mit der Variable "ind" arbeitet*; newind = ind+1; document.settimeout("popup("+newind+")"; 10000) }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage