kostenloser Webspace werbefrei: lima-city


JavaScript Array mit timeout ?

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    gamesfun

    gamesfun hat kostenlosen Webspace.

    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) ... ???




  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. lars-eichhorn

    Kostenloser Webspace von lars-eichhorn

    lars-eichhorn hat kostenlosen Webspace.

    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 :frown:)
    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 :wink:

    [edit]: habe das intervall bei Möglickeit 2 'stopp-bar' gemacht

    Beitrag zuletzt geändert: 5.7.2009 11:54:30 von lars-eichhorn
  4. 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)
       }
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!