tobias h.: ersatz für innerHTML

hallo,
ich suche eine möglichkeit in einen <div>-tag immer wieder neuen text via javascript anzuhängen (also nicht den alten zu überschreiben). innerHTML überschreibt den alten inhalt und das möchte ich vermeiden...gibt es einen ersatz für innerHTML mit dem ich inhalt anhängen kann? oder was wäre die eleganteste methode?

lg
tobi

  1. Hellihello

    hallo,
    ich suche eine möglichkeit in einen <div>-tag immer wieder neuen text via javascript anzuhängen (also nicht den alten zu überschreiben). innerHTML überschreibt den alten inhalt und das möchte ich vermeiden...gibt es einen ersatz für innerHTML mit dem ich inhalt anhängen kann? oder was wäre die eleganteste methode?

    innerHTML = innerHTML + newText;

    oder einhängen in den Dokumentenbaum in der Art (ungetestet):

    <div id="myId">

    myDiv=document.getElementById("myId");
    textKnoten=document.createTextNode("neuer Text");
    myDiv.appenChild("textKnoten");

    Dank und Gruß,

    frankx

    1. Hiho!

      Genauso. Am einfachsten (wie ich finde) ist es, in innerHTML innerHTML + den neuen Wert einzufuegen. Genauso, wie man es mit anderen Strings auch macht.

      1. Lieber Steel,

        Am einfachsten (wie ich finde) ist es, in innerHTML innerHTML + den neuen Wert einzufuegen.

        das kann böse enden! Ich meine mich zu erinnern, dass der IE in bestimmten Fällen entweder das innerHTML nicht verändert hat, oder gar größeren Schaden anrichtete.

        Verzichte komplett auf innerHTML! Warum? "innerHTML" verändert den Quelltext, ohne Rücksicht darauf zu nehmen, ob da noch andere Elemente drin versteckt sind, oder nicht. Mit dem Einfügen von Textknoten und mit dem Manipulieren der anderen Knoten (benutze element.nextSibling oder element.childNodes) schreibst Du Deine Scripte einigermaßen DOM konform. Beachte allerdings, dass der IE mit mehreren Textknoten so seine Probleme hat und die irgendwie alle in einen Textknoten zusammenschmeisst - oder so ähnlich, jedenfalls verhält er sich bei Textknoten definitiv anders als der Firefox.

        Alles was ich zum "IE" gesagt habe, gilt für IE <7, da ich seit seinem Erscheinen diese Dinge nicht mehr explizit geprüft habe, sodass ich zum IE7 keine Aussagen treffen kann.

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hi,

          Am einfachsten (wie ich finde) ist es, in innerHTML innerHTML + den neuen Wert einzufuegen.

          Kurzform: elem.innerHTML+=newCode

          das kann böse enden!

          Was nicht? :)

          Ich meine mich zu erinnern, dass der IE in bestimmten Fällen entweder das innerHTML nicht verändert hat, oder gar größeren Schaden anrichtete.

          Ist mir noch nicht untergekommen.

          Verzichte komplett auf innerHTML!

          Ich kann nicht dazu raten, diesen Vorschlag zu beherzigen. Warum? innerHTML ist allgemein akzeptiert und findet überall Verwendung. Ob man innerHTML oder DOM-Methoden einsetzt, ist IMHO einzig eine Sache der Anwendung (also was im konkreten Fall schneller/einfacher/sinnvoller ist).

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        2. Hallo,

          Warum? "innerHTML" verändert den Quelltext, ohne Rücksicht darauf zu nehmen, ob da noch andere Elemente drin versteckt sind, oder nicht.

          Was heißt denn "andere Elemente sind darin versteckt"?

          Mathias

          1. Lieber Mathias,

            Warum? "innerHTML" verändert den Quelltext, ohne Rücksicht darauf zu nehmen, ob da noch andere Elemente drin versteckt sind, oder nicht.

            Was heißt denn "andere Elemente sind darin versteckt"?

            <p id="elm">Textknoten mit <img src="bild.jpg" alt="Bild" /> und weiterem Textknoten</p>

            In diesem Textabsatz würde document.getElementById("elm").innerHTML folgendes enthalten:
            Textknoten mit <img src="bild.jpg" alt="Bild" /> und weiterem Textknoten

            Das <img>-Element würde über eine Manipulation des Wertes von innerHTML gegebenfalls entfernt, obwohl der OP meines Verständnisses nach nur an der Manipulation/Addition von Textknoten interessiert war. Da erscheint mir die Methode "Fummeln an innerHTML" wie eine Axt im Walde, während die Benutzung von DOM-Methoden wesentlich präziser (wie ein Skalpell) vorgeht. - Aber wie gesagt: Immer vom Blickwinkel der Manipulation/Addition von Textknoten aus betrachtet!

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Hallo,

              Das <img>-Element würde über eine Manipulation des Wertes von innerHTML gegebenfalls entfernt

              Wieso denn das?

              Es ging hier um innerHTML += "irgendwas". Was bitte entfernt daran irgendwelche Elemente? innerHTML bildet beim Serialisieren auch img-Elemente korrekt ab und parst sie beim Setzen auch wieder korrekt, wo liegt also das Problem?

              obwohl der OP meines Verständnisses nach nur an der Manipulation/Addition von Textknoten interessiert war

              Klar: Wenn man nur Textknoten anfügen will, ist innerHTML nicht das Mittel der Wahl. Aber es ist m.W. nicht schädlich, so wie du es darstellst.

              Mathias

        3. Hallo,

          Am einfachsten (wie ich finde) ist es, in innerHTML innerHTML + den neuen Wert einzufuegen.

          das kann böse enden! Ich meine mich zu erinnern, dass der IE in bestimmten Fällen entweder das innerHTML nicht verändert hat, oder gar größeren Schaden anrichtete.

          ja - da war mal was: innerHTML bei select-Element funktioniert mit IE7 nicht

          Gruß plan_B

          --
               *®*´¯`·.¸¸.·