Ich brauche eine Möglichkeit, HTML an ein Containerelement anzuhängen, ohne innerHTML zu verwenden. Der Grund, warum ich innerHTML nicht verwenden möchte, liegt darin, dass es wie folgt verwendet wird:
element.innerHTML += htmldata
Es funktioniert, indem zuerst der gesamte HTML-Code ersetzt wird, bevor der alte HTML-Code und der neue HTML-Code hinzugefügt werden. Dies ist nicht gut, da dynamische Medien wie eingebettete Flash-Videos zurückgesetzt werden ...
Ich könnte es so machen, was funktioniert:
var e = document.createElement('span');
e.innerHTML = htmldata;
element.appendChild(e);
Das Problem auf diese Weise ist jedoch, dass das Dokument jetzt das zusätzliche Span-Tag enthält, das ich nicht möchte.
Wie kann das dann gemacht werden? Vielen Dank!
Antworten:
So geben Sie eine Alternative an (da die Verwendung
DocumentFragment
nicht zu funktionieren scheint): Sie können sie simulieren, indem Sie die untergeordneten Elemente des neu generierten Knotens durchlaufen und nur diese anhängen.quelle
e.firstChild
. Vielmehr wird geprüft, obe
ein Kind vorhanden ist, und wenn ja, wird dieses Kind in das Element verschoben .Ich bin überrascht, dass in keiner der Antworten die
insertAdjacentHTML()
Methode erwähnt wurde. Schau es dir hier an . Der erste Parameter ist, wo Sie die Zeichenfolge anhängen und nehmen möchten ("beforebegin", "afterbegin", "beforeend", "afterend"). In der Situation des OP würden Sie "beforeend" verwenden. Der zweite Parameter ist nur die HTML-Zeichenfolge.Grundlegende Verwendung:
quelle
Uncaught TypeError: undefined is not a function
!alnafie hat eine gute Antwort auf diese Frage. Ich wollte ein Beispiel seines Codes als Referenz geben:
Hoffentlich ist dies für andere hilfreich.
quelle
Weisen Sie die Daten für div mit dem Symbol "+ =" zu. Sie können Daten einschließlich vorheriger HTML-Daten anhängen
quelle
element.innerHTML += data
.Dafür
DocumentFragment
war gedacht.document.createDocumentFragment
,.childNodes
quelle
(a)
? Ist das ein Tippfehler?Wie man fischt und dabei strengen Code verwendet. Am Ende dieses Beitrags sind zwei vorausgesetzte Funktionen erforderlich.
Fügen Sie mehrere Elemente hinzu (der Namespace muss sich nur im übergeordneten Element befinden):
Dynamisch wiederverwendbarer Code:
quelle