DiamondDog: Text nach <body> einfügen?

Hallo Leute,
ich hab das kleine Problem das ich meinen Text nich nach <body> eingefügt bekommen. Ich würde es gerne so machen das mein Text nach body eingefügt wird und dann danach alles bleibt wie es ist.
So sieht mein Code aus der nicht funktioniert:

  
var mybody = document.getElementsByTagName('body')[0];  
mybody1.innerHTML = 'Test';  

Ich hab es auch schon mit += versucht aber da wird der Text ja am Ende eingefügt,ich möcht ihn aber am Anfang haben.

Danke schon mal fürs Helfen.

Mfg Dog.

  1. Wie wäre es mit

    mybody1.innerHTML = 'Test' + mybody1.innerHTML;?

    Natürlich kannst Du auch insertBefore verwenden.

    Gruß, LX

    --
    RFC 1925, Satz 6: Es ist einfacher, ein Problem zu verschieben (...), als es zu lösen.
    1. Wie wäre es mit

      mybody1.innerHTML = 'Test' + mybody1.innerHTML;?

      Natürlich kannst Du auch insertBefore verwenden.

      Gruß, LX

      Super funktioniert bestens.
      Danke fürs schnelle Helfen.

    2. @@LX:

      Wie wäre es mit

      mybody1.innerHTML = 'Test' + mybody1.innerHTML;?

      Vielleicht nicht unbedingt die beste Idee, den Textknoten als Kind von 'body' einzubauen: schwerer zu stylen; in Strict nicht erlaubt.

      Besser:
      document.body.innerHTML = "<p>Test</p>" + document.body.innerHTML;

      Zu document.body siehe mein anderes Posting.

      Die Zuweisung an eine Variable 'mybody1' frisst nur unnötig Performanz und kann entfallen, wenn die Referenz nicht noch einige Male mehr verwendet wird.

      Live long and prosper,
      Gunnar

      --
      Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
      1. document.body.innerHTML = "<p>Test</p>" + document.body.innerHTML;

        Die Zuweisung an eine Variable 'mybody1' frisst nur unnötig Performanz und kann entfallen, wenn die Referenz nicht noch einige Male mehr verwendet wird.

        Die doppelte Dereferenzierung von document.body frisst genauso unnötig Performanz, dagegen ist eine Variable, die bloß auf eine Speicherstelle referenziert und wenige Bytes einnimmt, vermutlich nichts gegen. Bzw. vermutlich gibt sich das bei dem Beispiel überhaupt nichts. Allgemein sollte man Referenzen anlegen, denn es verbessert auch die Lesbarkeit.

        Mathias

        1. @@molily:

          Die doppelte Dereferenzierung von document.body frisst genauso unnötig Performanz, dagegen ist eine Variable, die bloß auf eine Speicherstelle referenziert und wenige Bytes einnimmt, vermutlich nichts gegen.

          Benchmarktests hatten mir mal geflüstert, dass Zuweisungen ziemlich lange dauern, warum auch immer. (Automatische Typumwandlung?)

          Live long and prosper,
          Gunnar

          --
          Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
      2. Besser:
        document.body.innerHTML = "<p>Test</p>" + document.body.innerHTML;

        Wo wir schon bei Performance sind:

        Hier wird der gesamte Dokumentkörper serialisiert, dann ein bisschen String drangehangen, dann wieder der gesamte HTML-String geparst und ALLE Elemente ausgewechselt.

        Das ist nicht nur bekloppt, weil alle Elemente aus dem Speicher geräumt werden und von neuem angelegt werden, sondern auch unendlich lahm. Dabei dürften alle angelegten DOM-Daten, die sich nicht serialisieren lassen, gelöscht werden (Event-Handler und dergleichen).

        Besser wäre:

        • insertAdjacentHTML mit beforeEnd - Microsoft, HTML 5, alle Browser außer Gecko, für Gecko createRange/createContextualFragment/appendChild: http://www.faqts.com/knowledge_base/view.phtml/aid/5756

        • document.createElement("div") plus innerHTML für den neuen Inhalt, dann body.appendChild

        • In dem obigen einfachen Beispiel würde natürlich createElement, createTextnode und 2x appendChild reichen, das wäre noch am schnellsten.

        Mathias

  2. @@DiamondDog:

    var mybody = document.getElementsByTagName('body')[0];

    Das kannst du wesentlich einfacher mit haben:
    var mybody = document.body;

    mybody1.innerHTML = 'Test';

    mybody1 gibt’s ja auch nicht. ;-) War wohl ein Tippfehler nur hier im Posting?

    Live long and prosper,
    Gunnar

    --
    Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)