molily: Texte verschieben von doc.b.innerHTML

Beitrag lesen

Ich brauch das aber ganz oben, sprich direkt unter dem Body.

document.body.innerHTML += 'Spieler nicht aktiv: ' + gesamt + '<br> Davon ' + i + ' im Urlaub und ' + inaktiv + ' inaktiv';

Auf document.body.innerHTML += solltest du möglichst verzichten, weil es das gesamte Dokument zu einem String serialisiert, den String erweitert und dann wieder alles parst und das komplette Dokument auswechselt. Dabei werden alle Elemente gelöscht und neu aufgebaut, dabei geht sämtlicher Status und sämtliche Event-Handler verloren.

Einfache Sachen kannst du über das DOM machen, der Einfachheit halber mit einem DocumentFragment als Container:

var fragment = document.createDocumentFragment();  
var text1 = document.createTextNode('Spieler nicht aktiv: ' + gesamt);  
fragment.appendChild(text1);  
var br = document.createElement('br');  
fragment.appendChild(br);  
var text2 = document.createTextNode('Davon ' + i + ' im Urlaub und ' + inaktiv + ' inaktiv');  
fragment.appendChild(text2);  
document.body.insertBefore(fragment, document.body.firstChild);

Das direkte Einfügen von HTML ist etwas schwieriger, dazu taugt entweder http://de.selfhtml.org/javascript/objekte/all.htm#insert_adjacent_html@title=insertAdjacentHTML. Diese Methode kennen allerdings noch nicht alle Browser. In Browsern, die sie kennen, ist sie aber die Methode der Wahl. Die Feature-Abfrage if (document.body.insertAdjacentHTML) {…} testet die Unterstützung einfach.

Alternativ kann man ein Element erzeugen und dessen innerHTML setzen, dann das Element einhängen.

var el = document.createElement('p');  
el.innerHTML = 'Text <strong>mit</strong> HTML';  
document.body.insertBefore(el, document.body.firstChild);

Eigentlich spricht nichts dagegen, denn losen Text sollte man im Body ohnehin nicht haben.

Mathias