Text nach <body> einfügen?
DiamondDog
- javascript
0 LX0 Gunnar Bittersmann
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.
Wie wäre es mit
mybody1.innerHTML = 'Test' + mybody1.innerHTML;
?
Natürlich kannst Du auch insertBefore verwenden.
Gruß, LX
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.
@@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
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
@@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
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
@@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