J'ai besoin d'un moyen d'ajouter du HTML à un élément de conteneur sans utiliser innerHTML. La raison pour laquelle je ne veux pas utiliser innerHTML est que quand il est utilisé comme ceci:
element.innerHTML += htmldata
Cela fonctionne en remplaçant tout le html avant d'ajouter l'ancien html plus le nouveau html. Ce n'est pas bon car cela réinitialise les médias dynamiques tels que les vidéos flash intégrées ...
Je pourrais le faire de cette façon qui fonctionne:
var e = document.createElement('span');
e.innerHTML = htmldata;
element.appendChild(e);
Cependant, le problème avec cette façon est qu'il y a cette balise span supplémentaire dans le document maintenant que je ne veux pas.
Comment cela peut-il être fait alors? Merci!
Réponses:
Pour donner une alternative (car l'utilisation
DocumentFragment
ne semble pas fonctionner): Vous pouvez la simuler en itérant sur les enfants du nœud nouvellement généré et en les ajouter uniquement.la source
e.firstChild
. Au contraire, il vérifie s'ile
a un enfant et si oui, déplace cet enfant vers l'élément.Je suis surpris qu'aucune des réponses ne mentionne la
insertAdjacentHTML()
méthode. Découvrez-le ici . Le premier paramètre est l'endroit où vous voulez que la chaîne soit ajoutée et prend ("beforebegin", "afterbegin", "beforeend", "afterend"). Dans la situation du PO, vous utiliseriez "beforeend". Le deuxième paramètre est juste la chaîne html.Utilisation de base:
la source
Uncaught TypeError: undefined is not a function
!alnafie a une excellente réponse à cette question. Je voulais donner un exemple de son code pour référence:
J'espère que cela sera utile aux autres.
la source
assignez les données pour div avec le symbole "+ =" vous pouvez ajouter des données, y compris les données HTML précédentes
la source
element.innerHTML += data
.C'est ce à quoi cela
DocumentFragment
était destiné.document.createDocumentFragment
,.childNodes
la source
(a)
? Est-ce une faute de frappe.Comment pêcher et en utilisant un code strict. Il y a deux fonctions préalables nécessaires au bas de cet article.
Ajoutez plusieurs éléments (l'espace de noms doit uniquement être sur l'élément parent):
Code réutilisable dynamique:
la source