Dom aus HTML erstellen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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]

    Comment


    • #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

      Comment


      • #4
        Schau dir mal das Tutorial an, da geht es um Ajax und DOM-Manipulation. Vielleicht hilft es dir weiter.
        Originally posted by AmicaNoctis View Post
        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.
        Originally posted by AmicaNoctis View Post
        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
        Last edited by Kropff; 09-07-2010, 17:29.
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Comment


        • #5
          Originally posted by Kropff View Post
          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]

          Comment


          • #6
            Originally posted by Kropff View Post
            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

            Comment


            • #7
              Originally posted by AmicaNoctis View Post
              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.
              Last edited by Kropff; 09-07-2010, 18:22.
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Comment


              • #8
                Originally posted by Kropff View Post
                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.

                Comment


                • #9
                  Originally posted by Kropff View Post
                  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]

                  Comment


                  • #10
                    Originally posted by AmicaNoctis View Post
                    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

                    Comment


                    • #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.

                      Comment


                      • #12
                        Originally posted by jmc View Post
                        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

                        Comment


                        • #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!

                          Comment


                          • #14
                            Originally posted by ThemBones View Post
                            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

                            Originally posted by ThemBones View Post
                            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]

                            Comment


                            • #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.

                              Comment

                              Working...
                              X