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 :

formatage de chaine


Sujet :

JavaScript

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1
    Par défaut formatage de chaine
    bonjour
    je debute en js, j'ai pas mal cherché une solution à mon probleme,mais je trouve pas.
    Voila j'ai créé un bouton destiné à inserer du code dans un texaera d'un formulaire. Pour ce faire j'ai recuperé une fonction qui me permet de la faire, sauf que je ne sais pas comment formater ma chaine convenablement dans la fonction. voila le bouton

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="button" value="Insérer" onClick="insertion(' 
    <a href="#" onClick="window.open('http://www.lien.com/dossier/infos.htm','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=0, copyhistory=0, menuBar=0, width=600, height=600');return(false)"><img border="0" src="http://www.lien.com/site.gif" width="17" height="17"></a>
    ')">

    La chaine est consideré comme du script et pas une chaine. Je pense que c'est un probleme de guillemet, mais les devancer par un \ ne fonctionne pas.
    Merci de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 31
    Par défaut
    Bonjour,

    Il te manque effectivement les caractères d'échappement. L'événement onclick est entouré de "double quotes" tandis que l'argument passé dans ta fonction insertion() est en simple quotes. Tu dois, dans un premier temps, réviser ta chaîne en retraçant les simple quotes.

    Ensuite, je te suggère d'éviter les double quotes se trouvant dans l'argument de ta fonction insertion('...'). Le cas échéant, tu obtiendras des erreurs de parsing HTML. Remplace-les par des simple quotes avec caractères d'échappement...

    A+

  3. #3
    Membre confirmé Avatar de dontDeleteMe
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 80
    Par défaut
    mais y a plus facile : ya qua mettre tes textes qui contient des quotes dans une chaine de caractères. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a onclick="javascript:alert("j'aime les raviolis");">cliquez ici siouplait</a>
    remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
      $chaine_qui_contient_le_texte = "\"j'aime les raviolis\"";
      echo "<a onclick=\"javascript:alert($chaine_qui_contient_le_texte);\">cliquez ici siouplait</a>";
    ?>
    et voilà le travail

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 31
    Par défaut
    L'exemple ci-dessus ne fonctionne pas puisqu'on échappe les double quotes sous PHP (je ne crois pas que julino ait fait mention d'utilisation PHP...)

    Le résultat final sera, sous PHP:
    <a onclick="javascript:alert("j'aime les raviolis");">cliquez ici siouplait</a> et il y aura erreur de parsing HTML.

    Sinon, il est vrai que séparer l'information dans des variables distinctes améliorera la compréhension de ton script julino...

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <script type="text/javascript">
       var jsLink = 'http://www.lien.com/dossier/infos.htm';
       var jsTarget = '_blank';
       var jsWinProperties = 'toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=0, copyhistory=0, menuBar=0, width=600, height=600';
     
       var jsInsertString = "<a href=\"javascript:void(0);\" onClick=\"window.open(jsLink,jsTarget,jsWinProperties);\"><img border=\"0\" src=\"http://www.lien.com/site.gif\" width=\"17\" height=\"17\"></a>";
    </script>
     
    <input type="button" value="Insérer" onClick="insertion(jsInsertString);" />
    S'il y a lieu d'utiliser PHP, je suggère de créer une fonction PHP qui formatera l'ensemble des infos ci-dessus pour une utilisation Javascript, et qui la passera ensuite dans la fonction insertion('...');
    <input type="button" value="Insérer" onClick="insertion(jsInsertString)">

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 5
    Par défaut
    Salut,
    j'ai un problème "un peu" similaire, mais impossible de le résoudre malgré mes multiples tentatives.
    J'ai (en gros, je ne mets que le code intéressant mais je peux donner plus de détails si besoin) :

    0°) une page page0.php qui affiche un tableau, lors du clic sur une case on affiche un texte (ça fonctionne bien) dans un autre tableau (<td id='info'>) d'un autre tableau et normalement (car ça ne fonctionne pas) un texte avec lui même un evenement onmouseover dans une autre case (<td id='reports'>)

    1°) une page page.php qui me renvoie un texte contenant des doubles quotes, disons
    page.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo '"mon texte"'; ?>
    C'est ce texte qu'on veut voir dans le onmouseover

    2°) un script javascript qui récupére ce texte (un tableau en fait, contenant des liens lui même) et doit l'afficher dans une boite au survol du texte dans <td id='reports> :
    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
    <script language="JavaScript">
    function mettre_lien(http_request){
    // case où afficher le lien
    tdrep=document.getElementById('reports');
    // recuperation de la reponse du serveur, on enleve les retours à la ligne (pour test)
    toto=http_request.responseText.replace(/\n/g,"");
    // dans un script, creation d'une variable contenant le texte recupere
    chaine="<script type='text/javascript' language='JavaScript'> var aaa='"+toto+"';alert(aaa);</script>";
    // creation du lien avec les evenements associes
    chaine=chaine+"<a style='cursor:pointer;'";
    chaine=chaine+' onmouseover="ddrivetip(aaa);" onmouseout="hideddrivetip()">';
    chaine=chaine+"Rapports<a>";
    // on remplit la case avec le texte cree ci dessus
    tdrep.innerHTML=chaine;
    }
    </script>
    Ce qui se passe : le texte "Rapports" est bien affiché mais le onmouseover plante car il ne trouve pas "aaa". Je me dis que c'est parce que les scripts contenus dans ce innerHTML n'est pas interprété par le browser (c'est ça???) et que seul le moteur graphique traite ce innerHTML.
    J'ai essayé "basiquement" de ne pas passer par aaa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine=chaine+' onmouseover="ddrivetip('+http_request.responseText+');" onmouseout="hideddrivetip()">';
    Mais les doubles quotes faisait planter l'intepretation de la chaine après les premiers "
    J'ai essayé aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine=chaine+' onmouseover=ddrivetip('+http_request.responseText+'); onmouseout="hideddrivetip()">';
    mais en affichant la source ensuite sous firefox, je constatais le même problème puisque la source contenait de nouveau un " avant le ddrivetip : il semble que firefox ajoute ce double quote s'il manque...

    Bon, j'imagine que c'est pas très clair, je peux expliquer plus si besoin.

    Quelqu'un peut-il m'aider?

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 5
    Par défaut
    Je m'auto réponds (pour bien séparer la réponse) puisqu'à force de tentatives diverses et variées, j'ai fini par obtenir quelque chose qui fonctionne. C'est pas très beau mais ça fonctionne. Voici l'équivalent qui fonctionne de la fonction "mettre_lien" que je listais :
    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
    http_request.onreadystatechange = function() {
    // recup de la case
    tdrep=document.getElementById('reports');
    // epuration du texte a afficher
    toto=http_request.responseText.replace(/"/g,"");
    toto=toto.replace(/\n/g,"");
    // preparation de la chaine
    chaine="<a style='cursor:pointer;'";
    chaine=chaine+" onmouseover='ddrivetip(\""+toto+"\");' onmouseout='hideddrivetip()'>";
    chaine=chaine+"Rapports<a>";
    // affichage de la chaine
    tdrep.innerHTML=chaine;
    };
    http_request.open('GET', url, true);
    http_request.send(null);
    Pour arriver à cela, j'ai dû épurer le code de ses retours à la ligne (c'est du html, donc pas très grave) et de ses doubles quotes (plus grave...). Ca s'affiche correctement dans une boite lors du survol du lien.

Discussions similaires

  1. Formatage de chaine pour l'execute immediate
    Par Azounet dans le forum SQL
    Réponses: 7
    Dernier message: 28/03/2008, 16h18
  2. Formatage de chaine avant insertion dans BDD MySQL
    Par kdson dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 18/01/2008, 01h01
  3. [RegEx] Problème de formatage de chaine de caractère
    Par lecra dans le forum Langage
    Réponses: 5
    Dernier message: 29/05/2007, 14h17
  4. [Tableaux] formatage de chaine
    Par renaud26 dans le forum Langage
    Réponses: 17
    Dernier message: 15/06/2006, 21h44
  5. Formatage du chaine suivant un masque
    Par AlexB59 dans le forum Langage
    Réponses: 1
    Dernier message: 07/02/2006, 10h31

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