IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Récupérer le texte d'un lien


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web (en formation)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Par défaut Récupérer le texte d'un lien
    Bonjour,

    Je souhaiterai récupérer le texte d'un lien, et ce pour plusieurs cas.

    Mes liens sont chaque fois dans une balise avec une class, je met le contenu dans une variable.

    Ma variable contient donc :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="" target="" title="">texte de mon lien</a>

    Et je souhaite récupérer juste : texte de mon lien

    Comment procéder ?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    pour récupérer les éléments d'une même classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var elements = document.querySelectorAll(".nom-de-la-classe");
    pour récupérer le texte contenu il te suffit de récupérer le textContent de chaque l'élément.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web (en formation)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Par défaut
    Bonjour,

    Merci NoSmoking.

    Je vais tester ça dans une boucle pour faire ce dont j'ai besoin et voir si tout fonctionne comme je le souhaite avec ça.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web (en formation)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Par défaut
    Bonjour,

    Le textContent me permet bien de récupérer le contenu mais je n'arrive pas à faire ce que je veux car je n'arrive pas à isoler une sauvegarde d'un élément.

    Quand je modifie le contenu d'un élément, cela modifie aussi sa sauvegarde que j'ai mis dans une autre variable. Comment faire une variable bien isolée ?

    Le but étant de supprimer une balise et son contenu puis de remettre le texte de son contenu à la place où a été supprimé l'élément => comme supprimer une balise <a> sauf son texte.

    Toutefois, peut-être qu'il y a une méthode beaucoup plus simple pour faire ce que je souhaite.

    Exemple : l'élément ayant une classe "test" :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <li class="test"><a href="" target="" title="">Liste1</a><h3>bla</h3><p>blablabla</p></li>

    Je veux supprimer :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="" target="" title="">Liste1</a>

    puis remettre son texte (Liste1) à la place de façon à avoir :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <li class="test">Liste1<h3>bla</h3><p>blablabla</p></li>

    et ensuite j'essayerai de le faire sur tous les éléments ayant la classe "test".

    Les h3 et p sont là juste pour dire qu'il y a d'autres choses après qui ne doivent pas être modifiées.

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Pour un seul élément (disons le premier avec une classe 'test') tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let li = document.getElementsByClassName('test')[0],
        alink = li.getElementsByTagName('a')[0];
     
    for (let child of alink.childNodes) {
        li.insertBefore(child, alink);
    }
     
    li.removeChild(alink);
    Le principe consiste à déplacer chaque nœud contenu dans l'élément a juste avant celui-ci, puis d'effacer l'élément a. C'est une solution générale qui fonctionne quoi que puisse contenir l'élément a, mais si tu sais d'avance que le l'élément a ne contient qu'un seul nœud (comme dans ton exemple où il n'y a qu'un nœud texte), tu peux simplifier le code en faisant juste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    li.replaceChild(alink.firstChild, alink);

    Reste ensuite à l'adapter pour une liste de nœuds (tous les éléments avec une classe 'test'), ce qui ne devrait pas être compliqué, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (let li of document.getElementsByClassName('test')) {
        let alink = li.getElementsByTagName('a')[0];
        li.replaceChild(alink.firstChild, alink);
    }

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web (en formation)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Par défaut
    Bonjour,

    J'avais réussi à le faire pour une avec les infos que j'avais mais avec la boucle pour le faire pour tous cela commençait à faire quelques chose de compliqué et de lourd.

    Ta solution, CosmoKnacki, est beaucoup plus courte et plus simple, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Récupérer le texte d'un lien cliqué
    Par faterr dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 11/12/2008, 10h44
  2. Récupérer le texte d'un lien
    Par bugbug73 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/11/2008, 11h55
  3. Des styles pour le texte et les liens dans la meme div?
    Par Donkey' Shot dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 26/01/2005, 20h03
  4. Récupérer le texte d'un champ de texte
    Par theberliner dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/12/2004, 10h08
  5. [methode] récupérer du texte
    Par thesly dans le forum Débuter
    Réponses: 6
    Dernier message: 23/04/2004, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo