Ergebnis 1 bis 10 von 10
  1. #1
    rtx05 ist offline Grünschnabel
    registriert
    21-07-2008
    Beiträge
    4

    warten bis alle Elemente geladen sind

    Hallo zusammen

    Ich lade in einen DIV-Block mittels XMLHttpRequest() dynamisch einige <input type="checkbox" .../>

    requestObj.open("Get", urlWithParam, true);
    requestObj.onreadystatechange = insertHTMLBlock;
    requestObj.send(null);

    }

    function insertHTMLBlock() {
    if (requestObj.readyState == 4 && requestObj.status == 200) document.getElementById("contentBody").innerHTML = requestObj.responseText;
    }

    Anschliessend möchte ich je nach Randbedingung einige oder alle checked setzen. An sich kein Problem, aber:

    function xyz() {

    var inputCheckFields = document.getElementsByTagName("input");

    // zum testen eingebaut
    alert(inputCheckFields.length); liefert 2 = nicht alle Elemente
    alert(inputCheckFields.length); liefert 128 = das ist korrekt

    // folgendes ist vereinfacht, da wird ja keine Bedigung geprüft ist nur
    // ein Beispiel, also ein alert("") vorher reicht und die Elemente sind
    // vollständig "geladen" und werden angehakt ohne alert jedoch nicht
    //

    for (var i = 0; i < inputCheckFields.length; i++)
    inputCheckFields[i].checked = true;

    }

    Wie kann ich abfragen oder warten bis alle Elemente geladen sind, die 128 ist auch kein Fix-Wert und ein nutzloses alert("") einfügen, das der Nutzer wegklicken muss, kann's hoffentlich auch nicht sein!

    Für Hinweise wäre ich dankbar.
    Markus

  2. #2
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: warten bis alle Elemente geladen sind

    Wann rufst du die Funktion xyz() auf?

  3. #3
    Morgenes ist offline Jungspund
    registriert
    19-07-2008
    Beiträge
    12

    AW: warten bis alle Elemente geladen sind

    soweit ich weis dürfte das mit
    <body onLoad="funktion()">
    gehen
    kann sien dass die syntax falsch ist
    aber soweit mir bekannt wird onLoad
    dann ausgeführt wenn alles geladen ist.
    Bitte verbessern wenns nicht stimmt...

  4. #4
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: warten bis alle Elemente geladen sind

    Das stimmt, aber du willst die Funktion aufrufen, wenn die Daten des AJAX Aufrufes vorhanden sind und das mit onload nichts zu tun.

  5. #5
    rtx05 ist offline Grünschnabel
    registriert
    21-07-2008
    Beiträge
    4

    AW: warten bis alle Elemente geladen sind

    stimmt mit onload=xyz() kann ich es nicht machen.

    Ich habe ein Menu, und je nach Anwahl eines Menupunktes wird ein Ajax-Request abgesetzt und nach diesem Request, wird die methode xzy() gerufen.

    ein warten(1000ms) bringt auch nichts:

    also

    var anz1 = inputCheckFields.length
    warte(1000);
    var anz2 = inputCheckFields.length

    Ergebnis: anz1 == anz2 und zwar weit weniger als alle Elemente


    var anz1 = inputCheckFields.length
    alert("");
    var anz2 = inputCheckFields.length

    Ergebnis: anz2 > anz1

  6. #6
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: warten bis alle Elemente geladen sind

    du kannst die Funktion xyz() erst aufrufen wenn der AJAX Request beendet ist, es ist doch bekannt wann.

  7. #7
    rtx05 ist offline Grünschnabel
    registriert
    21-07-2008
    Beiträge
    4

    AW: warten bis alle Elemente geladen sind

    Danke für den Hinweis! Das hat mich auf was gebracht:

    Mein Programmablauf war schneller als die (vollständige Abarbeitung der) Callback-Funktion

    Ich registriere die Callback-Funktion:

    requestObj.onreadystatechange = insertHTMLBlock

    In dieser lade ich bisher nur die Antwort des Request (HTML-Elemente) rein:

    function insertHTMLBlock() {

    if (requestObj.readyState == 4 && requestObj.status == 200)

    document.getElementById("contentBody").innerHTML = requestObj.responseText;

    // hier werde ich mal versuchen die xyz()-funktion einzubauen

    }

  8. #8
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: warten bis alle Elemente geladen sind

    genau dort ist die Stelle wo du es dtun solltest. Du solltest auch versuchen deinen Code hier im Forum lesbarer zu machen, in dem du z.b. [ code ] Tags verwendest.

  9. #9
    rtx05 ist offline Grünschnabel
    registriert
    21-07-2008
    Beiträge
    4

    AW: warten bis alle Elemente geladen sind

    Dankeschön! Sachverhalt geklärt.

    Dank dem Forum hier, weiß ich nun auch, wie man die Callback-Funktion (oder besser Referenz) mit Parameter zuweist:
    Code:
    requestObj.onreadystatechange = function(){insertHTMLBlock(param);};
    Deshalb hatte ich ursprünglich die xyz()-Funktionalität nicht in den Callback integrieren können.

    Nun tut's

  10. #10
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: warten bis alle Elemente geladen sind

    Was sich in so einer Situation auch immer anbietet (weil du es erwähnt hast) ist eine callback Funktion.

    Mit deiner xyz() Funktion würde das z.b. so aussehen:
    PHP-Code:
    function createRequest(callback, ....) {
    /* Request Objekt erzeugen usw. */
    requestObj.open("Get"urlWithParamtrue);
    requestObj.onreadystatechange = function() {
       if (
    requestObj.readyState == && requestObj.status == 200
       {
          
    insertHTMLBlock();
          if(
    callbackcallback();
       }
    };
    requestObj.send(null);
    }

    createRequest(xyz); 

Ähnliche Themen

  1. Zeitmessung bis ein Bild geladen ist
    Von gallus1980 im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 04-07-2007, 09:57
  2. warten bis lib geladen ist...
    Von stripmitz im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 15-07-2006, 17:39
  3. Anzeigen eines "loading" gif bis Framset geladen ist
    Von jaxfront im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 21-03-2006, 12:05
  4. Antworten: 10
    Letzter Beitrag: 06-12-2005, 14:59
  5. warten bis flassh applikation fertig geladen
    Von Solarwasser im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 28-06-2005, 14:10

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •