Partage
  • Partager sur Facebook
  • Partager sur Twitter

Activité 1 JS DOM

Un lien avant un paragraphe ?

8 octobre 2018 à 0:04:07

Bonjour/Bonsoir

Alors voilà, après plus du'un 1h je décide a lancer cette bouteille à la mer pour demander votre aide. 

Je n'arrive pas à placer un lien <a> avant le texte d'une balise <p>. 

/* 
Activité 1
*/

// Liste des liens Web à afficher. Un lien est défini par :
// - son titre
// - son URL
// - son auteur (la personne qui l'a publié)
var listeLiens = [
    {
        titre: "So Foot",
        url: "http://sofoot.com",
        auteur: "yann.usaille"
    },
    {
        titre: "Guide d'autodéfense numérique",
        url: "http://guide.boum.org",
        auteur: "paulochon"
    },
    {
        titre: "L'encyclopédie en ligne Wikipedia",
        url: "http://Wikipedia.org",
        auteur: "annie.zette"
    }
];

// TODO : compléter ce fichier pour ajouter les liens à la page web


listeLiens.forEach(function (infos) {
    var divLienElt = document.createElement("div");
    divLienElt.className = "lien";
    
    var pElt = document.createElement("p");
    var aElt = document.createElement("a");
    
    aElt.href = infos.url;
    aElt.textContent = infos.titre;
    aElt.style.color = "#428bca";
    aElt.style.textDecoration = "none";
    aElt.style.fontWeight = "bold";
    
//    var spanLienElt = document.createElement("span");
//    spanLienElt.textContent = " " + infos.url;
//    
//    aElt.appendChild(spanLienElt);
    
    pElt.textContent = " " + infos.url;
    
//    document.getElementsByClassName("lien").beforeend()
    
    pElt.appendChild(aElt);
    
    
    

    
    var pAuteurElt = document.createElement("p");
    var spanElt = document.createElement("span");
    
    pAuteurElt.textContent = "Ajouter par : ";
    spanElt.textContent = infos.auteur;
    pAuteurElt.appendChild(spanElt);
    
    
//    divLienElt.appendChild(aElt);
    
    divLienElt.appendChild(pElt);
    divLienElt.appendChild(pAuteurElt);
    
    document.getElementById("contenu").appendChild(divLienElt);
    
});

Voici mon code et voici ce que j'obtiens : 

Comme ont peux le voir, le texte "https://....." apparait avant le lien. Alors que je voudrais qu'il arrive après ! juste à la fin de la balise <a>

Si vous avez des idées pouvant m'aider, je suis preneur et merci à vous d'avance !  

  • Partager sur Facebook
  • Partager sur Twitter
8 octobre 2018 à 1:57:19

Salut,

Alors, ton problème, c'est que la ligne 48 définit le contenu textuel de ton nœud p. Ce qu'il faut que tu fasses, c'est que ta ligne 52 doit être exécutée avant, puis, tu ferais quelque chose comme ça :

// On crée un nœud textuel que l’on ajoute immédiatement.
pElt.appendChild(document.createTextNode(infos.url));



  • Partager sur Facebook
  • Partager sur Twitter
Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.
10 octobre 2018 à 18:59:41

Nice ! ça marche super, merci de ton aide ! :D
  • Partager sur Facebook
  • Partager sur Twitter