CyberTux: Script funktioniert nicht mit innerHTML

Hallo,

ich habe eine Seite bei welcher die Content-Seiten über ein Script mit document.getElementById(pageElement).innerHTML geladen wird.

Auf einer Seite die nachgeladen wird habe ich ein Script eingebaut (das Script stammt aus diesem Thread hier
http://forum.de.selfhtml.org/archiv/2006/10/t138977/ )

Das Script funktioniert wunderbar wenn die Seite normal aufgerufen wird, wird die Seite jedoch über innerHTML eingebunden funktioniert das Script nicht mehr.

Kann mir jemand sagen warum das so ist?

Hier wird die Seite eingebunden, Script läuft nicht: http://www.insektenfang.de/prototyp/

Hier wird die Seite alleinstehend aufgerufen, Script läuft:
http://www.insektenfang.de/prototyp/ueberuns.html

Es dreht sich um die mittlere Spalte.

viele Grüße, Rolf

  1. Hallo Rolf,

    Variante >scriptLäuft<

    • Seite wird geladen
    • Scriptblock wird mit dem Header geladen
    • this.onload=initNews wird ausgeführt und weißt den news-DIVs den
        entsprechenden Event zu
    • Mouseover-Effekt wie gewünscht

    Variante >scriptLäuftNicht<

    • Seite wird geladen
    • ajax.js und switchnews.js werden geladen
    • <body onload="...> führt den httpRequest aus und läd den Inhalt der
        Mittelspalte nach
    • Ende
    • kein Mouseover-Effekt

    Was fehlt? Die Eventzuweisung für die betreffenden Elemente. Du führst zwar am
    Ende der switchnews.js wieder window.onload=initNews aus, es erfolgt aber
    keine Zuweisung des Events. Die Elemente sind zu diesem Zeitpunkt im DOM noch
    garnicht vorhanden.

    Hast du schon mal im IE getestet? Der zeigt garnicht erst was an, sondern
    kommt gleich mit der Fehlermeldung 'initNews.activeNews' ist Null oder
    kein Objekt...

    Eine mögliche Lösung könnte darin bestehen, dass du initNews erst ausführst,
    wenn Ajax fertig ist.

    Grüße, dicon

    1. Hallo dicon,

      vielen Dank für Deine Antwort.

      Ich denke ich habe Deine Ausführungen soweit schon verstanden, weiß nur nicht wie ich das umsetzten soll. Sorry, ich bin Javascriptmäßig leider nicht besonders fit.

      Eine mögliche Lösung könnte darin bestehen, dass du initNews erst ausführst,
      wenn Ajax fertig ist.

      Wie gehe ich denn da vor, woran merke ich das ajax fertig ist? Könnte das eventuell mit setTimeOut gelöst werden?

      vielen Dank vorab,
      viele Grüße, Rolf

      Hallo Rolf,

      Variante >scriptLäuft<

      • Seite wird geladen
      • Scriptblock wird mit dem Header geladen
      • this.onload=initNews wird ausgeführt und weißt den news-DIVs den
          entsprechenden Event zu
      • Mouseover-Effekt wie gewünscht

      Variante >scriptLäuftNicht<

      • Seite wird geladen
      • ajax.js und switchnews.js werden geladen
      • <body onload="...> führt den httpRequest aus und läd den Inhalt der
          Mittelspalte nach
      • Ende
      • kein Mouseover-Effekt

      Was fehlt? Die Eventzuweisung für die betreffenden Elemente. Du führst zwar am
      Ende der switchnews.js wieder window.onload=initNews aus, es erfolgt aber
      keine Zuweisung des Events. Die Elemente sind zu diesem Zeitpunkt im DOM noch
      garnicht vorhanden.

      Hast du schon mal im IE getestet? Der zeigt garnicht erst was an, sondern
      kommt gleich mit der Fehlermeldung 'initNews.activeNews' ist Null oder
      kein Objekt...

      Eine mögliche Lösung könnte darin bestehen, dass du initNews erst ausführst,
      wenn Ajax fertig ist.

      Grüße, dicon

      1. 'n Abend,

        muss eben zum Grillen... wenn es sonst keine hilfreichen Postings gibt, meld ich
        mich später nochmal.

        Grüße, dicon

        1. Hat sich erledigt, bin auf ein andere AJAX-Bibliothek umgestiegen.

          Grüße, Rolf

          'n Abend,

          muss eben zum Grillen... wenn es sonst keine hilfreichen Postings gibt, meld ich
          mich später nochmal.

          Grüße, dicon

          1. Hallo Rolf,

            ...bin auf ein andere AJAX-Bibliothek umgestiegen.

            Yep, hab ich gestern schon gesehen... SpryTabbedPanels - da hast dir ja was
            vorgenommen ;o)) Hab deswegen auch keinen Kommentar mehr abgegeben.

            Grüße & viel Spaß damit, dicon