Dom aus HTML erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dom aus HTML erstellen

    Hallo,

    such sowas schon seit einiger Zeit, wurde noch nicht fündig und komm nicht dazu mir sowas selbst zu schreiben.

    Such ein JS-Script, das mir aus aus einem HTML-Template DOM-Elemente via document.createElement() etc. erstellt.

  • #2
    Hallo,

    wo kommt denn der HTML-Code her? Wenn der sowieso vom Server kommt, kannst du ihn mit AJAX laden und hast ihn dann im respon************ML als DOMDocument – vorausgesetzt er liegt als valides XHTML vor und wird als application/xhtml+xml, application/xml oder text/xml gesendet.

    Wenn nicht, kannst du den Code immer noch per innerHTML in ein leeres div schreiben und dann mit den DOM-Methoden darauf zugreifen. Der letzte Rettungsanker wäre noch document.write.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hi Amica,

      danke für deine Antwort.
      Eben, das Ding ist das, ich möchte dass der Code aus einem Template geholt wird. innerHTML macht mit dem IE immer wieder mal Probleme. Ausserdem gibts damit immer wieder mal Probleme wenn man bereits per Ajax generierten dynamischen Inhalt nochmals mit JS-Funktionen zur Laufzeit ausstatten möchte.
      Find einfach die Erstellung per Dom-Methoden sauberer.

      Aber die Anregung an sich ist nicht schlecht, ich könnt natürlich einfach via AJAX das Template rendern lassen und mir das Ergebnis zurückgeben.

      Danke schonmal

      Kommentar


      • #4
        Schau dir mal das Tutorial an, da geht es um Ajax und DOM-Manipulation. Vielleicht hilft es dir weiter.
        Zitat von AmicaNoctis Beitrag anzeigen
        Wenn der sowieso vom Server kommt, kannst du ihn mit AJAX laden und hast ihn dann im respon************ML als DOMDocument – vorausgesetzt er liegt als valides XHTML vor und wird als application/xhtml+xml, application/xml oder text/xml gesendet.
        Gibt Probleme, besonders bei Formularelementen. Hab ich selber mal erlebt.
        Zitat von AmicaNoctis Beitrag anzeigen
        Wenn nicht, kannst du den Code immer noch per innerHTML in ein leeres div schreiben und dann mit den DOM-Methoden darauf zugreifen.
        Mit innerHTML gibt es tatsächlich Probleme.
        Peter
        Zuletzt geändert von Kropff; 09.07.2010, 18:29.
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Zitat von Kropff Beitrag anzeigen
          Gibt Probleme, besonders bei Formularelementen. Hab ich selber mal erlebt.
          Dann erzähl mal, das interessiert mich jetzt auch.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Zitat von Kropff Beitrag anzeigen
            Gibt Probleme, besonders bei Formularelementen. Hab ich selber mal erlebt.
            Das ist genau so aussagekräftig wie "funzt nicht" …
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Zitat von AmicaNoctis Beitrag anzeigen
              Dann erzähl mal, das interessiert mich jetzt auch.
              Ich habe per Ajax-Request in einem PHP-Script ein select-Feld mit den entsprechenden option-Elementen erzeugt und ausgegeben. Der Header war korrekt ausgezeichnet mit text/xml, text/html oder text/xhtml. Hab alle drei ausprobiert. Und das wollte ich ganz einfach per innerHTML in ein div einhängen. Gibt nicht. Dann habe ich einen neuen Knoten erzeugt, wollte das select einhängen und den neuen Knoten in das div, ging auch nicht. Ich habe da etliche Stunden herumprobiert, aber nichts funktionierte.

              Peter

              PS: Vielleicht lag es auch daran, dass der eigentliche (X)HTML-Code nicht vollständig valide war. Könnte eine Möglichkeit gewesen sein.
              Zuletzt geändert von Kropff; 09.07.2010, 19:22.
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Zitat von Kropff Beitrag anzeigen
                PS: Vielleicht lag es auch daran, dass der eigentliche (X)HTML-Code nicht vollständig valide war. Könnte eine Möglichkeit gewesen sein.
                Nein, es lag am IE - http://www.php-resource.de/forum/htm...tml#post635408
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Zitat von Kropff Beitrag anzeigen
                  PS: Vielleicht lag es auch daran, dass der eigentliche (X)HTML-Code nicht vollständig valide war. Könnte eine Möglichkeit gewesen sein.
                  Ähm, ja. Jaaa!

                  Davon abgesehen sollte der Content-Type application/xhtml+xml sein und nicht irgendetwas selbst ausgedachtes

                  Außerdem hat man dann das DOM des geladenen Dokuments direkt im respon************ML des XHR und braucht innerHTML nicht mal ansatzweise. Das ist nämlich AJAX im wörtlichen Sinne und eigentlich die sauberste Variante.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Zitat von AmicaNoctis Beitrag anzeigen
                    Außerdem hat man dann das DOM des geladenen Dokuments direkt im respon************ML des XHR und braucht innerHTML nicht mal ansatzweise. Das ist nämlich AJAX im wörtlichen Sinne und eigentlich die sauberste Variante.
                    Ich schau's mir mal an, sobald es sich hier in Köln ein klein wenig abgekühlt hat. Mein Hirn wird schon seit Tagen frittiert.

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Z.B. das Framework prototypejs hat die drei bekannten Fehler bei innerHTML korrigiert (script-, table- und select-tags). Schau dir einfach mal die funktion update dort im Quellcode an, damit hast du es ziemlich schnell gelöst.

                      Kommentar


                      • #12
                        Zitat von jmc Beitrag anzeigen
                        Z.B. das Framework prototypejs hat die drei bekannten Fehler bei innerHTML korrigiert (script-, table- und select-tags). Schau dir einfach mal die funktion update dort im Quellcode an, damit hast du es ziemlich schnell gelöst.
                        Mach ich, sobald ich wieder klar denken kann.

                        Peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Außerdem hat man dann das DOM des geladenen Dokuments direkt im respon************ML des XHR
                          Naja das stimmt in meinem Fall nur bedingt. Ich arbeite mit JSON, php bietet sogar eine Funktion dafür (json_encode)

                          Z.B. das Framework prototypejs hat die drei bekannten Fehler bei innerHTML korrigiert (script-, table- und select-tags). Schau dir einfach mal die funktion update dort im Quellcode an, damit hast du es ziemlich schnell gelöst.
                          Benutz ich bereits. Wirklich sehr angenehm. evalJSON() bietet das Gegenstück zu json_encode auf Serverseite.

                          Nachteil ist eben, das ich keine dom-Objekt zurückbekomme sondern JSON-Daten (find das angenehm wenns relativ komplexe Objekte sind).
                          Habs jetzt tatsächlich so gelöst, dass eben noch ein AJAX-Call hinzukommt, und ich einfach ein Template rendere. Damit hab ich meine dom-Objekt und ich kann innerHTML verwenden. Klingt jetzt vielleicht umständlich, aber ich kann jetzt einfach das template bearbeiten ohne im JS-Code rumfingern zu müssen.

                          Danke nochmal!

                          Kommentar


                          • #14
                            Zitat von ThemBones Beitrag anzeigen
                            Naja das stimmt in meinem Fall nur bedingt. Ich arbeite mit JSON
                            Du überträgst HTML-Templates* mit JSON? Denn Sinn dahinter musst du mir mal erklären

                            ___
                            * Ich beziehe mich dabei auf

                            Zitat von ThemBones Beitrag anzeigen
                            das mir aus aus einem HTML-Template DOM-Elemente via document.createElement() etc. erstellt
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              Wenn du prototypejs benutzt warum dann nicht gleich update() statt innerHTML. Das ist genau für diesen Zweck da, da innerHTML je nach Browser Fehler aufweist.

                              Kommentar

                              Lädt...
                              X