JeuWeb - Crée ton jeu par navigateur
[Javascript] Soucis avec removeChild - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Javascript] Soucis avec removeChild (/showthread.php?tid=768)



[Javascript] Soucis avec removeChild - Sephi-Chan - 06-02-2007

Bonjour,

Je m'essaye actuellement au couple DOM/Javascript et je me heurte à un problème.

J'ai créer un script grâce auquel on peut ajouter et retirer des éléments (li) à une liste (ul). Mais voila, je n'arrive pas à retirer les éléments déjà mis en place dans le code xHTML. Seuls les éléments ajoutés à l'aide de la fonction s'enlèvent.

Je vous le demande donc, savez-vous pourquoi ces éléments ne s'enlève pas de la même manière que ceux qu'on ajoute grâce à la fonction ?

Voici le code Javascript :
Code :
<script type="text/javascript">
<!--
        function ajouter(id){
        
                var liste = document.getElementById(id);
                var element = document.createElement('li');
                element.innerHTML = 'Pomme de Terre';      
                liste.appendChild(element);
                
        }
        
        function retirer(id){
        
                var liste = document.getElementById(id);
                var dernier_element = liste.lastChild;
                var nom = dernier_element.nodeName;

                if(dernier_element.nodeName.toLowerCase() == 'li'){
                        
                        liste.removeChild(dernier_element);
                }
        }
        
//-->
</script>

Ainsi que le code xHTML :
Code :
<ul id="liste1">
        <h2>Liste 1</h2>
        <li>Element 1</li>
        <li>Element 2</li>
</ul>


J'espère que vous pourrez m'aider.

Je vous en remercie d'avance,


Sephi-Chan


RE: [Javascript] Soucis avec removeChild - Raoull - 06-02-2007

A ta place je virerai le H2 de l'intérieur de UL, et j'essaierai de virer le dernier noeud à partir de son index, un peu comme ca (pas testé) :

Code :
        function retirer(id){
        
                var liste = document.getElementById(id);
                var dernier_index = liste.childNodes.length - 1;
                liste.removeChild(dernier_index);

        }

Pour un minimum de sécu faudrait vérifier que dernier_index est > -1, c'est à dire qu'il ya bien des éléments dans la liste, en tout cas au moins 1 (index 0).