Partage
  • Partager sur Facebook
  • Partager sur Twitter

AppendChild? Problème bizarre...

Sujet résolu
    17 février 2011 à 14:44:17

    Bonjour à tous,

    Voilà j'ai un truc assez bizarre, j'ai un div ( tab ) et en fonction des dépêches que je récupére grâce à une requête ajax, à chaque fois je créait un nouveau div pour stocker les dépêches et les rattacher au div du début ( tab ) avec appendChild.

    Le soucis c'est que il faut que j'entoure ses divs d'un lien donc bon, j'avais eu l'idée de rattacher au div tab avec cette partie de code :

    document.getElementById("tab").innerHTML+= "<span><a href=\"XXXXXXXXXXXXXXXX"  target=\"XXXXX\">";
    


    et qu'ensuite je fasse le fameux :

    XXX.appendChild(XXX);
    


    Et ensuite je veux fermais mon lien avec :

    document.getElementById("tab").innerHTML+= "</a>";
    


    Mais seulement que je mettes ou pas le :

    document.getElementById("tab").innerHTML+= "</a>";
    


    ça me fait exactement la même chose c'est à dire que ça me rajoute la balise </a> à la fin de mon lien et donc avant le appendChild, du coup je ne peux pas entourer ma div de mon lien...

    Alors le soucis est-ce le appendChild qui referme automatiquement ma balise <a> ??

    Merci d'avance de votre réponse. :D
    • Partager sur Facebook
    • Partager sur Twitter
      17 février 2011 à 15:10:48

      Dans ton premier code tu n'as pas échappé le 2e " (mais je pense que ça doit être une erreur de recopie)


      Quand tu utilises innerHTML le DOM est ensuite mis à jour. Du coup quand tu fais: element.innerHTML+= "<a>"; la balise <a> est ajoutée au HTML or celle-ci n'est pas fermée. Donc le navigateur, afin d'éviter de faire planter le DOM, la ferme automatiquement et ajoute cette balise au DOM.

      Du coup lorsque tu ajoutes ton élément XXX au DOM il le rajoute après la balise <a>
      En plus c'est logique, quand tu fais YYY.appendChild(XXX); tu demandes de l'ajouter à l'élément YYY et non pas à l'élément <a>


      Pour corriger ton problème tu peux soit ajouter un id à ta balise <a> puis ajoutée ton élement XXX à cet élément via un getElementById.
      Soit tout faire en DOM:
      var a=document.createElement("a");
      a.href="XXXXXXXXXXXXXXXX";
      a.target="XXXXXXXXXXXXXXXX";
      a.appendChild(XXX);
      YYY.appendChild(a);
      
      • Partager sur Facebook
      • Partager sur Twitter
        17 février 2011 à 15:17:56

        Merci beaucoup, grâce à toi ça marche parfaitement maintenant ! ;)
        • Partager sur Facebook
        • Partager sur Twitter

        AppendChild? Problème bizarre...

        × 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