Partage
  • Partager sur Facebook
  • Partager sur Twitter

Failed to execute 'appendChild'

    21 février 2017 à 20:05:34

    Bonsoir !

    Je souhaiterais créer une liste au nombre de points modulables par l'intermédiaire de boutons "+" ou "-". Voici le petit bout de code HTML :

    <p>
       <ul id="liste_objets">
           <li id="pnt_1"></li>
       </ul>
    </p><br/>
    
    <button id="plus">+</button><br>
    <button id="moins" style="display:none">-</button>


    Et le Javascript associé :

    var nbObjet = 1;
    var liste = document.getElementById('liste_objets');
    var plus = document.getElementById('plus');
    var moins = document.getElementById('moins');
    
    
    plus.addEventListener("click", function () {
    	nbObjet++;
    
    	var nouvelElmt = document.createElement('li'); //on crée un nouvel elmt li
    	nouvelElmt.id = 'pnt_' + nbObjet;
    	liste.appendChild('nouvelElmt');
    
    	 document.getElementById('moins').style.display='inline'; //on fait apparaître le bouton moins
    });
    
    moins.addEventListener("click", function () {
    	if(nbObjet>1){
    		var idLastPnt = 'pnt_' + nbObjet;
    		var LastPnt = document.getElementById(idLastPnt)
    		liste.removeChild(LastPnt);
    		nbObjet--;
    	}
    
    	if(nbObjet==1){
    		document.getElementById('moins').style.display='none'
    	}
    });

    Seulement, lorsque je teste le bouton "+", j'obtiens ce message d'erreur : "Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'." (à la ligne 11 donc). Quelqu’un pourrait-il m'aider à comprendre ce qui ne va pas ?

    Merci d'avance!

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      21 février 2017 à 22:33:22

      var nbObjet = 1;
      var liste = document.getElementById('liste_objets');
      var plus = document.getElementById('plus');
      var moins = document.getElementById('moins');
       
       
      plus.addEventListener("click", function () {
          nbObjet++;
       
          var nouvelElmt = document.createElement('li'); //on crée un nouvel elmt li
          nouvelElmt.id = 'pnt_' + nbObjet;
          liste.appendChild(nouvelElmt);
       
           document.getElementById('moins').style.display='inline'; //on fait apparaître le bouton moins
      });
       
      moins.addEventListener("click", function () {
          if(nbObjet>1){
              var idLastPnt = 'pnt_' + nbObjet;
              var LastPnt = document.getElementById(idLastPnt)
              liste.removeChild(LastPnt);
              nbObjet--;
          }
       
          if(nbObjet==1){
              document.getElementById('moins').style.display='none'
          }
      });
      • Partager sur Facebook
      • Partager sur Twitter
        22 février 2017 à 7:32:34

        L'erreur est très parlante ici. Tu essayes d'ajouter la string "nouvelElmt" à ta liste au lieu de la variable, qui elle est une node.
        • Partager sur Facebook
        • Partager sur Twitter
        $2b||!$2b
          22 février 2017 à 12:26:39

          Ça me parait plus logique en effet.

          Merci beaucoup pour votre aide !

          • Partager sur Facebook
          • Partager sur Twitter

          Failed to execute 'appendChild'

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown