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 :

le caractère "%" et les expressions régulières [RegExp]


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut le caractère "%" et les expressions régulières
    Bonjour.

    Voici une fonction qui a pour but de remplacer une chaine de caractères par une autre dans un DIV contenteditable.

    La chaine à remplacer ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div id="12345">
         <div id="ad12345" style="width: 50%; float: left;">ICI, DU TEXTE</div>
    </div>
    J'ai une fonction déclenchée par "onClick" sur plusieurs boutons qui permettent de transformer en et ça fonctionne.
    Cette même fonction est sensée transformer en mais là, ça ne fonctionne pas du tout et probablement à cause du signe "%".

    Voici la fonction Javascript qui permet ces changements :

    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
     
    function modifierEncadre(encId, code, newValeur) {
         encIdAddress = "ad"+encId;  
     
         var tailleDiv = document.getElementById(encId).offsetWidth;
         var tailleSsDiv = document.getElementById(encIdAddress).offsetWidth;
         var ratio = Math.ceil((tailleSsDiv/tailleDiv)*100);
     
         if (code == "aFloat") {
              valeur = getComputedStyle(document.getElementById(encIdAddress)).cssFloat;
         } else if (code == "aWidth") {
              var perc = String.fromCharCode(37);
              valeur = ratio+perc;
         }
     
         str = document.getElementById(encId).innerHTML;
         expReg = new RegExp(valeur, 'gi');
         remplacement = str.replace(expReg, newValeur);
     
         artTexte = document.getElementById("artTexte").innerHTML;
         expRegFin = new RegExp(str, 'gi');
         remplacementFinal = artTexte.replace(expRegFin,remplacement);
         document.getElementById("artTexte").innerHTML=remplacementFinal;
    }
    Pour le changement de largeur, je n'utilise pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur = getComputedStyle(document.getElementById(encIdAddress)).width;
    parce que cette dernière renvoie une valeur en px. Or, j'ai besoin d'une valeur en pourcentage.

    J'espère avoir été assez explicite et surtout, que quelqu'un saura m'aider sur cette problématique.

    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    le % ne pose aucun souci ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    chaine="width:50%;"
    prop="width"
    remp="25%"
    var reg=new RegExp("("+prop+")\\s*:\\s*[^;]+;","gi")
    alert(chaine.replace( reg,"$1:"+remp) )
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Homme Profil pro
    Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, webdevelopper, consultant en communication, bidouilleur sur Macintosh
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    Merci SpaceFrog.

    En effet ta fonction fonctionne correctement mais, n'a pas le même comportement sur les différents navigateurs que j'ai pu tester (FF, Safari, Chrome et Opera). Du coup cela me pose d'autres problèmes trop hasardeux pour que j'utilise ta fonction.

    Pour information, j'ai tenté de procéder autrement en utilisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("encIdAddress").style.width="25%";
    J'ai remarqué qu'en l'absence de style css, les navigateurs créaient automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="12345" style="width: 25%;">blabla</div>
    .
    Ainsi, en utilisant : document.getElementById("12345").innerHTML, j'obtiens exactement ce que je recherchais initialement.

    Ceci n'a pas encore été testé sous IE mais j'ai bon espoir...

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Rien à voir avec le regex ...


    mais ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("12345")
    Mais un id ne doit pas etre uniquement numérique ni commencer par du numérique
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2014, 10h57
  2. Problème avec les expressions régulières
    Par Premium dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 18/06/2006, 16h41
  3. Les Expressions Régulières
    Par zEndymion dans le forum Access
    Réponses: 4
    Dernier message: 12/06/2006, 13h36

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