Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle for qui boucle trop tôt

Sujet résolu
    17 juin 2010 à 18:08:23

    Salut !
    Je veux donc supprimer toutes les balises avec name ="bloc" :
    var bloc = document.getElementsByName('bloc');
    alert(bloc.length); // affiche 12
    for (i2=0 ; i2<bloc.length; i2++)
    {
      alert('eo'); // S'affiche 7 fois.
      bloc[i2].parentNode.removeChild(bloc[i2]);
    }
    


    Et donc ça supprime que 7 balises. :(

    Une idée ?
    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      17 juin 2010 à 18:22:17

      Ton problème est que lorsque tu supprimes un élément cela à mis à jour ta liste de nom (donc avec un élément en moins)

      Tu as donc plusieurs solutions:
      • Soit tu fais une copie dans un tableau de tous les éléments de cette liste.
      • Soit tu supprimes le premier élément de cette liste jusqu'à ce qu'il n'y ait plus d'élément:
        var bloc = document.getElementsByName('bloc');
        while(bloc.length)
        {
          bloc[0].parentNode.removeChild(bloc[0]);
        }
        

      • soit tu parcours cette liste à l'envers:
        var bloc = document.getElementsByName('bloc');
        var i2=bloc.length;
        while(i2--){
        {
          bloc[i2].parentNode.removeChild(bloc[i2]);
        }
        


      Personnellement je préfère la dernière solution
      • Partager sur Facebook
      • Partager sur Twitter

      Boucle for qui boucle trop tôt

      × 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