hever: innerHTML erstellt tags

Hallo zusammen,
ich bin gerade auf ein mich störendes Problem mit innerHTML gestoßen:

document.getElementById("...").innerHTML = "<p>test";
alert(document.getElementById("...").innerHTML);

Ausgabe:
<p>test</p>

innerHTML hat also das abschließende p - Tag erstellt, obwohl ich dass garnicht will!

Mein Browser:
Mozilla Firefox 1.5.0.4 (bei Konqueror nix anderes)

Hat jemand rat wie ich dass unterbinden kann, bzw. kennt jemand eine alternative innerHTML funktion. (Letztendlich muss ich ziemlich viel verschachtelten html quellcode reinschreiben, also an den Knoten rumspielen kommt nicht wirklich in Frage). Es sei denn es gibt eine Funktion die das ganze für mich übernimmt.

Danke im Vorraus

  1. Hi,

    innerHTML hat also das abschließende p - Tag erstellt, obwohl ich dass garnicht will!

    was versuchst du denn überhaupt? Ungültigen HTML-Code zu erstellen? Wenn es nur darum geht das in mehreren Schritten zu machen, dann setze doch erst den String zusammen und setze dann das .innerHTML auf einen Schlag. Generell hat innerHTML ja genau den Sinn kompletten Quellcode zu übernehmen ohne Elementknoten von Hand zu erzeugen, du solltest es dann aber auch mit echtem HTML füttern.

    MfG
    Rouven

    --
    -------------------
    "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
    1. was versuchst du denn überhaupt? Ungültigen HTML-Code zu erstellen?

      Also eigentlich übergebe ich absolut konformen Code an innerHTML. Die Methode zerflückt mir den Code aber trotzdem.

      In kurz (das original ist komplexer aber auf jeden fall W3C-Konform):
      Rein geht:
      <p id="Absatz1"><p id="Absatz2"></p></p>
      Raus kommt:
      <p id="Absatz1"></p><p id="Absatz2"></p><p></p>

      (Er macht die Container direkt zu!!!)

      Ich will eigentlich nur dass innerHTML mir nicht dazwischenredet und meint etwas verändern zu müssen!

      Wenn es nur darum geht das in mehreren Schritten zu machen, dann setze doch erst den String zusammen und setze dann das .innerHTML auf einen Schlag.

      Genau das mache ich ja, es bringt aber trotzdem nix.

      Es ist sehr ärgerlich, und dass war nicht immer so bei innerHTML!

      1. Hello out there!

        Also eigentlich übergebe ich absolut konformen Code an innerHTML.

        Nein, tust du nicht.

        Rein geht:
        <p id="Absatz1"><p id="Absatz2"></p></p>

        ^1              ^2  ^3

        ad 1: Damit schließt du den ersten Absatz.
        ad 2: Damit schließt du den zweiten Absatz.
        ad 3: Zu diesem End-Tag gibt es kein Start-Tag.

        <!ELEMENT P - O (%inline;)* -- paragraph --> [DTD-HTML401]

        p-Elemente dürfen nicht verschachtelt werden. Deren End-Tag ist optinal.

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
      2. Hi,

        In kurz (das original ist komplexer aber auf jeden fall W3C-Konform):
        Rein geht:
        <p id="Absatz1"><p id="Absatz2"></p></p>
        Raus kommt:
        <p id="Absatz1"></p><p id="Absatz2"></p><p></p>

        ...und da bist du dir sicher?
        Verschachtelte <p> sind in dieser Form nicht erlaubt, da der Inhaltstyp von <p> inline ist, <p> selber ab block.

        MfG
        Rouven

        --
        -------------------
        "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
      3. ERWISCHT!!
        Sehr gut, danke euch!
        Da hab ich was verschlafen.

        W3C sagt:

        <p id="Absatz1"><p id="Absatz2"></p></p>

        The Validator found an end tag for the above element, but that element is not currently open. This is often caused by a leftover end tag from an element that was removed during editing, or by an implicitly closed element (if you have an error related to an element being used where it is not allowed, this is almost certainly the case). In the latter case this error will disappear as soon as you fix the original problem.

        Ich habe jetzt P durch DIV ersetzt und hab keine Probleme mehr.

        Vielen Dank, ihr habt mir gut geholfen!