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 :

remplacer le terme d'un texte par un lien


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut remplacer le terme d'un texte par un lien
    Bonjour,
    j'aimerai remplacer un terme par un lien soit par exemple à chaque fois que le terme google apparait le remplacer par google
    J'ai fait quelques recherches sur le net et j'ai trouvé un code qui fait ce que je veux mais je ne vois pas pourquoi il ne fonctionne pas quand je veux l'utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    var word="google";
    var url="http://www.google.com";
     
    var func=new Function("match","var link=document.createElement(\"A\"); link.textContent=match; link.setAttribute(\"href\",\""+url+"\"); return link;}");
     
    replaceTextContent(new RegExp(word,"gmi"),func);
     
    function replaceTextContent(regexp,handler)
    {
    	var snapshots=document.evaluate("//body//text()",document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
    	for(var num1=0;num1<snapshots.snapshotLength;num1++)
    	{
    		regexp.lastIndex=0;
    		var node1=snapshots.snapshotItem(num1);
    		var match1=regexp.exec(node1.textContent);
    		if (match1)
    		{
    			var node2=node1.parentNode;
    			var node3=node1.nextSibling;
    			node2.removeChild(node1);
    			while (match1)
    			{
    				node2.insertBefore(document.createTextNode(RegExp.leftContext),node3);
    				try{node2.insertBefore(handler(match1),node3);}
    				catch(ex){node2.insertBefore(document.createTextNode(match1),node3);}
    				regexp.lastIndex=0;
    				match1=regexp.exec(RegExp.rightContext);
    			}
    			node2.insertBefore(document.createTextNode(RegExp.rightContext),node3);
    		}
    	}
    }
    il me met une erreur à la ligne var func=new Function("match","var link=document.createElement(\"A\"); link.textContent=match; link.setAttribute(\"href\",\""+url+"\"); return link;}"); et me dit syntax error

    Pourriez vous s'il vous plait m'aider, je suis débutante en javascript et je bloque dessus sans trouver de solutions depuis pas mal de jours déjà
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script type='text/javascript'>
    function addLink(Texte){
    var reg=/(google)/gi;
    return Texte.replace(reg,"http://www.google.fr")
    }
    var baratin="mlkjm dmlkj dslmkjf qsdmlkj google mklmlkj "
     
    alert(addLink(baratin))
    </script>

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 202
    Points : 215
    Points
    215
    Par défaut
    bonjour,

    j'ajouterai que le lien ne devrait pas s'ajouter sur les liens existants.
    par ex dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je teste l'ajout du lien <a href="www.google.fr">google.fr</a> quand je rencontre le mot google.fr
    sinon on obient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je teste l'ajout du lien <a href="www.<a href="www.google.fr">google.fr</a>"><a href="www.google.fr">google.fr</a></a> quand je rencontre le mot <a href="www.google.fr">google.fr</a>
    ce qui ne serait pas cool

    mais là, je sèche.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Ce poste rejoint le tien...

    http://www.developpez.net/forums/sho...=576187&page=2

    la regExp serait:

    à moins que tu ne veuiles pas non plus les mot google entre balises html ...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En fait google n'est qu'un exemple, j'ai une liste de mots et un texte, je voudrais que dans mon texte tous les mots qui apparaissent dans ma liste soit avec leur lien respectif.

    Bien evidemment ne pas rajouter de liens au liens prééxistants

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script type='text/javascript'>
    function addLink(Texte){
    var reg=/(google)/gi;
    return Texte.replace(reg,"http://www.google.fr")
    }
    var baratin="mlkjm dmlkj dslmkjf qsdmlkj google mklmlkj "
     
    alert(addLink(baratin))
    </script>
    J'ai testé la fonction en prenant en argument un paragraphe présent dans mon fichier html et quand je l'applique il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    syntax error
    [Break on this error] <p>&nbsp;</p>\n
    Vous auriez une idée pour régler cela s'il vous plait?

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    fais un replace des \n de ton paragraphe ou passe l'expression régulière en multilignes (m)

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    fais un replace des \n de ton paragraphe ou passe l'expression régulière en multilignes (m)
    Je comprends pas comment passer l'expression régulière en multiligne
    J'ai rajouté un m au 'gi'

    var reg= new RegExp('([^\<]*)('+mot+')([^\>]*)','gmi');

    mais cela ne change rien

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    javascript n'accèpte peut être pas le multiligne ... ?

    essaye de remplacer les \n avant ...

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    javascript n'accèpte peut être pas le multiligne ... ?

    essaye de remplacer les \n avant ...
    J'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var m= '\n';
    var re= new RegExp('([^\<]*)('+m+')([^\>]*)','gi');
    texte=texte.replace(re,"");
    Je ne sais pas si c'est bien cela mais en faisant cela, rien d'inchangé

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    rien d'inchangé
    Docn tout à changé ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var reg=/\n/g;
    Texte=Texte.replace(reg,' ')

Discussions similaires

  1. Afficher du texte par un lien en HTML !
    Par elfia dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 20/06/2007, 18h06
  2. Remplacement d'un texte par un autre
    Par Iria77 dans le forum Général Python
    Réponses: 3
    Dernier message: 21/08/2006, 08h56
  3. Remplacer du texte par une image en css
    Par Seth77 dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 03/04/2006, 11h57
  4. Remplacer un texte par un autre
    Par Guillaume602 dans le forum C++
    Réponses: 3
    Dernier message: 24/11/2005, 00h40
  5. []splitter texte puis remplacer un terme en particulier
    Par af_airone dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/10/2005, 11h31

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