InnerHTML anhängen statt ersetzen

7

Ich verwende diesen Code, um eine div mit einer AJAX-Anfrage zu aktualisieren

%Vor%

Alles funktioniert gut, das Problem ist, dass, wenn die div mit der id some_id eine Menge Inhalt hat, ich den Inhalt verschwinden sehe und dann aktualisiert werde, nachdem die AJAX-Anfrage ausgeführt wurde.

Ich denke, dass es daran liegt,

%Vor%

Löscht und ersetzt den innerHTML von div mit dem vorherigen innerHTML plus den neuen Inhalt, was zu einem previous content → blank → updated content Verhalten führt.

Gibt es eine Möglichkeit, den neuen Inhalt an den div anzuhängen, anstatt seinen gesamten Inhalt durch den neuen zu ersetzen?

    
BackSlash 30.08.2013, 19:12
quelle

3 Antworten

12

Angenommen, htmlhttp.responseText ist ein Knoten:

%Vor%

Wenn Sie nur eine Zeichenfolge von HTML haben (was wahrscheinlich ist), dann:

%Vor%

Andererseits müssen Sie neue Elemente aus einer Zeichenfolge anfügen:

%Vor%

Referenzen:

David Thomas 30.08.2013, 19:15
quelle
5

Sie könnten Element.insertAdjacentHTML() verwenden.

  

insertAdjacentHTML () analysiert den angegebenen Text als HTML oder XML und fügt die resultierenden Knoten an einer bestimmten Position in den DOM-Baum ein . Es analysiert nicht das Element, auf dem es verwendet wird, und daher werden die vorhandenen Elemente im Element nicht beschädigt. Dies und die Vermeidung des zusätzlichen Schritts der Serialisierung machen es viel schneller als direkte innerHTML-Manipulation.

Ich denke, Sie würden

tun %Vor%     
oldergod 17.03.2016 14:11
quelle
3
%Vor%     
Ankit Agrawal 30.08.2013 19:32
quelle

Tags und Links