captain_torche Posté 23 Juillet 2007 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 ?)
Dudu Posté 24 Juillet 2007 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.
captain_torche Posté 24 Juillet 2007 Auteur 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 !
TheRec Posté 24 Juillet 2007 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
captain_torche Posté 24 Juillet 2007 Auteur Posté 24 Juillet 2007 Merci à vous deux, les deux codes marchent à la perfection
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant