J'utilise AJAX pour ajouter des données à l'élément div, où je remplis le div à partir de JavaScript, comment puis-je ajouter de nouvelles données au div sans perdre les données précédentes trouvées dans div?
javascript
Adham
la source
la source
Réponses:
Essaye ça:
la source
div
des éléments contiennent des écouteurs d'événements ou des entrées avec du texte saisi par l'utilisateur. Je recommande la réponse de Chandu .Utiliser appendChild:
Utilisation de innerHTML:
Cette approche supprimera tous les écouteurs des éléments existants comme mentionné par @BiAiB. Soyez donc prudent si vous prévoyez d'utiliser cette version.
la source
createTextNode
ne fonctionnera pas si vous chargez du HTML. Si vous souhaitez ajouter des éléments de liste, par exemple, cela ne fonctionnera pas. C'est assez limitatif.Attention
innerHTML
, vous perdez en quelque sorte quelque chose lorsque vous l'utilisez:Est équivalent à:
Ce qui détruira tous les nœuds à l'intérieur du vôtre
div
et en recréera de nouveaux. Toutes les références et tous les écouteurs des éléments qu'il contient seront perdus .Si vous devez les conserver (lorsque vous avez attaché un gestionnaire de clic, par exemple), vous devez ajouter le nouveau contenu avec les fonctions DOM (appendChild, insertAfter, insertBefore):
la source
appendChild
été faite par @Cybernatedocument.createTextNode()
.Si tu veux le faire rapidement et ne voulez pas perdre de références et d'écouteurs, utilisez: .insertAdjacentHTML () ;
"Il n'analyse pas l'élément il est utilisé et ne corrompt donc pas les éléments existants à l'intérieur de l'élément. Cela, et en évitant l'étape supplémentaire de sérialisation, le rend beaucoup plus rapide que la manipulation directe en HTML interne."
Pris en charge sur tous les navigateurs principaux (IE6 +, FF8 +, tous les autres et mobiles): http://caniuse.com/#feat=insertadjacenthtml
Exemple de https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
la source
insertAdjacentElement()
etinsertAdjacentText()
.Si vous utilisez jQuery, vous pouvez utiliser
$('#mydiv').append('html content')
et il conservera le contenu existant.http://api.jquery.com/append/
la source
Même cela fonctionnera:
la source
Solution IE9 + (Vista +), sans créer de nouveaux nœuds de texte:
Cependant, cela n'a pas tout à fait fait l'affaire pour moi car j'avais besoin d'une nouvelle ligne après chaque message, alors ma DIV s'est transformée en une UL stylisée avec ce code:
Depuis https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent :
la source
vous pouvez utiliser jQuery. ce qui le rend très simple.
il suffit de télécharger le fichier jQuery, d'ajouter jQuery dans votre code HTML
ou vous pouvez utiliser un lien en ligne:
et essayez ceci:
la source
La méthode suivante est moins générale que les autres, mais elle est idéale lorsque vous êtes sûr que votre dernier nœud enfant de la div est déjà un nœud de texte. De cette façon, vous ne créerez pas de nouveau nœud de texte à l'aide de
appendData
MDN Reference AppendDatala source
Pourquoi ne pas simplement utiliser setAttribute?
Ensuite, vous pouvez obtenir ces données en:
la source
script java
jquery
Utilisez
.html()
sans aucun argument pour voir que vous avez entré. Vous pouvez utiliser la console du navigateur pour tester rapidement ces fonctions avant de les utiliser dans votre code.la source