2017-09-29 1 views
2

ich eine Funktion haben, das dies tut:Alternative zu document.body.innerHTML + = htmlstring

document.body.innerHTML += '<div>lorem ipsum</div>'; 

und es funktioniert gut, aber es bricht mir Referenzen von anderen divs (ich habe gelesen, dass dies, weil es analysiert den Körper erneut). Gibt es eine Vanille-Alternative, die nur Javascript verwendet?

+0

Was bedeutet "es bricht meine Referenzen von anderen Divs"? –

+0

Zum Beispiel, wenn ich 'var div = document.querySelector ('. Example') gesetzt hätte;' nach dem 'document.body.innerHTML + = '

lorem ipsum
'; 'die Variable div würde einen Verweis auf einen Knoten enthalten, der nicht mehr da ist (es ist immer noch, aber es ist veraltet), so dass alle Ereignislistener nicht funktionieren usw. – nick

Antwort

2

Zwei Möglichkeiten, wie ich

document.body.appendChild(document.createElement('div')).app‌​endChild(document.cr‌​eateTextNode('lorem ipsum')) 

sehen kann, welche für

nur eine Abkürzung ist
var div = document.createElement('div'); 
var text = document.createTextNode('lorem ipsum'); 
div.appendChild(text); 
document.body.appendChild('div'); 

oder

document.body.insertAdjacentHTML('beforeEnd', '<div>lorem ipsum</div>'); 

Dokumentation:

+0

welche methode hast du benutzt: p –

+0

Zweite, kürzere und eleganter IMO! – nick

+0

Sollte auch berücksichtigt werden [Element.insertAdjacentElement()] (https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentElement) für mehr Flexibilität über appendChild() –

1

können Sie anhänge es eine anderen div

document.getElementById("demoDiv").innerHTML += '<div>Test 22</div>';
<div>Test</div> 
 
<div id="demoDiv"></div>

+0

Ja, ich wollte vermeiden, ein Div manuell erstellen, aber trotzdem danke ! – nick