captain_torche Posté 23 Juillet 2007 Partager Posté 23 Juillet 2007 Je suis en train de développer une toute petite fonctionnalité en AJAX (j'utilise prototype), et je me heure à un souci minuscule : J'ai une zone qui devra se remplir avec un Ajax.Updater (qui marche sans problème), ou manuellement en parsant un flux XML. Tout se passe pour le mieux, sauf quand je tente de vider la zone en question pour y ajouter manuellement son contenu. J'ai essayé quelques fonctions, qui ne semblent pas marcher à la perfection : Je pensais utiliser celle-ci en premier lieu, elle me semblait la plus "propre" : function vide(element) { var elt = $(element); while(elt.hasChildNodes) elt.removeChild(elt.firstChild);} Mais je n'arrive plus à ajouter d'élément après coup (ce qui est fâcheux) J'ai tenté de décomposer un peu plus dans une autre fonction, en listant tous les éléments enfants, et en les supprimant un à un, mais ça ne semble pas fonctionner non plus : il me laisse des enfants après coup. function vide(element) { var elt = $(element); var enfants = elt.childNodes; for(var i = 0; i < enfants.length; i++) elt.removeChild(enfants[i]);} Y a t'il un bug dans mes fonctions ? Ou une fonction miracle qui le fait déjà (voire une fonction interne de prototype ?) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dudu Posté 24 Juillet 2007 Partager Posté 24 Juillet 2007 Salut Désolé je vais répondre à côté. Mais effacer le contenu d'un élément pour ensuite ajouter un nouveau contenu, chez moi ça s'appelle "remplacer". Et qui dit remplacer dit replaceChild. Non ? edit: et en remplaçant ton while du premier code par while elt.firstChild ça donne quoi ? firstChild renvoie null si aucun enfant n'existe. Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 24 Juillet 2007 Auteur Partager Posté 24 Juillet 2007 L'effaçage et le remplacement se font en deux étapes (et je réutilise la fonction), d'où la nécessité de supprimer d'abord. Et je n'ai pas qu'un enfant à changer, mais éventuellement plusieurs. Pour le while elt.firstChild, je teste ça dès que j'arrive au boulot. Merci, en tout cas ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 24 Juillet 2007 Partager Posté 24 Juillet 2007 Bonjour, Prototype permet de faire ceci simplement grâce à la fonction "update". Pour vider un élément il suffit de l'appeler sans paramètre, dans ton cas : function vide(element) { $(element).update(); } Si tu souhaite directement remplacer le contenu je te laisse lire la page "update" de l'API de Prototype. Bonne continuation Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 24 Juillet 2007 Auteur Partager Posté 24 Juillet 2007 Merci à vous deux, les deux codes marchent à la perfection Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant