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 :

Boucle de content replace


Sujet :

JavaScript

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Boucle de content replace
    Bonjour,

    J'ai besoin de remplacer une série de caractères qui ont sauté dû à un charset foireux, à la volée dans une page. J'ai utilisé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript">
    var all = document.getElementsByClassName('entry-content');
     
    for(var i=0;i<all.length;i++) {
    	var content = all[i].innerHTML;
    	content = content.replace('&amp;eacute;','é');
    	content = content.replace('&amp;agrave;','à');
            content = content.replace('&amp;ugrave;','ù');
            content = content.replace('&amp;egrave;','è');
    	all[i].innerHTML = content;
    }
    </script>
    Cela fonctionne bien sauf que... Cela ne marche qu'une fois par lettre. Une fois qu'un "é" a été remplacé, le suivant reste pêté Je pensais pourtant avoir bien fait une boucle. Quelqu'un pourrait-il m'aiguiller sur comment bien remplacer les caractères problématique dans l'ensemble du texte ?

    Merci par avance,

  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 643
    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 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Dans ton script le replace ne fonctionne que pour la première occurence
    il faudrait tester si il y a encore des occurences de la chaine a remplacer avec une boucle while indexOf

    le plsu simple est de passer par les expressions régulières et le modifyer g (général)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript">
    var all = document.getElementsByClassName('entry-content');
     
    for(var i=0;i<all.length;i++) {
    	var content = all[i].innerHTML;
    	content = content.replace('/&amp;eacute;/g','é');
    	content = content.replace('/&amp;agrave/g;','à');
            content = content.replace(/'&amp;ugrave;/g','ù');
            content = content.replace('/&amp;egrave;/g','è');
    	all[i].innerHTML = content;
    }
    </script>
    qui pourrait se simplifier en un seul replace avec un callback ..

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [XL-97] Boucle sur colonne + replace
    Par brasco06 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2009, 10h59
  3. replace dans une boucle
    Par anasama dans le forum SL & STL
    Réponses: 13
    Dernier message: 25/04/2006, 16h49
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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