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 :

[DOM] syntaxe d'échappement des guillemets


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 26
    Points : 16
    Points
    16
    Par défaut [DOM] syntaxe d'échappement des guillemets
    Hello

    Bon, voilà quelques heures que je cherche, sans réponse...

    Le code ci-dessous semble ne pas fonctionner : le contenu de la div n'est pas mis à jour lors du clic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function showComments(div) {
    var newtext="<a href='#' onclick=\"document.getElementById(div).innerHTML = 'test'; return false; \">Retour au billet</a>";
    document.getElementById(div).innerHTML = newtext;
    }
    Je suppose que ma syntaxe d'échappement n'est pas la bonne...
    non ?

    Merci du coup de pouce !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    OK, j'ai trouvé.

    C'est tout simplement la variable div qui n'était pas interprétée dans la chaine de caractères...

    Désolé pour ce sujet inutile..

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function showComments(div) 
    {
    var newtext="<a href='#' onclick=\"document.getElementById('"+div+"').innerHTML = 'test'; return false; \">Retour au billet</a>";
    document.getElementById(div).innerHTML = newtext;
    }

    autre écriture possible :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function showComments(div) 
    {
    	var lien = document.createElement("a");
    	lien.onclick = function()
    				{
    				document.getElementById(div).innerHTML = "test";
    				return false;
    				}	
    	lien.appendChild(document.createTextNode("Retour au billet"));
     
    	document.getElementById(div).innerHTML = "";
    	document.getElementById(div).appendChild(lien);
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta réponse.

    La seconde m'intrigue particulièrement, dans la mesure où elle évite les imbrications ; donc j'essaye de la comprendre...

    Voilà où j'en suis, ça se complique un tantinet...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $textebillet='<a href=\'#\'  onclick=\'showComments(\'texte\'); return false;\' >'.$totalRows_comments.' commentaires</a>'.
            $row_billet['texte'].
            '<hr/>'.
    ?>
    puis en javascript,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var newtext="<a href='#' onclick=\"document.getElementById('texte').innerHTML = '<?php echo preg_replace('#\r?\n#', '<br />', $textebillet);?>'; return false; \">Retour au billet</a>
    C'est le quatrième niveau d'imbrication qui plantouille, le (\'texte\') du PHP..
    Je suis conscient que mon code est une usine à gaz (d'autant plus que je n'en présente que le minimum). L'idée est de faire un va et vient entre un article et ses commentaires...

    Je vais essayer de comprendre ton code pour resortir une version plus simple...

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Je te conseille de regarder le code javascript généré par ton PHP, je crois que tu arriveras plus facilement à localiser le problème.
    N'étant pas compétent en PHP, je peux difficilement t'aider sur ce le bout de code que tu as posté


    Le second exemple que je donne utilise des fonctions DOM pour créer ton lien et l'insérer dans le div.
    Toutefois ce code n'est pas "100% DOM" dans la mesure où pour vider le contenu du div j'utilise une méthode un peu radicale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(div).innerHTML = "";

    J'aurais dû parcourir l'arborescence du div et utiliser la méthode removeChild().

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par yakou32 Voir le message
    Je vais essayer de comprendre ton code pour resortir une version plus simple...
    Bon courage !!! Ce n'est pas dans les habitudes de Auteur de compliquer ses codes

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Citation Envoyé par yakou32 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var newtext="<a href='#' onclick=\"document.getElementById('texte').innerHTML = '<?php echo preg_replace('#\r?\n#', '<br />', $textebillet);?>'; return false; \">Retour au billet</a>
    alors ça c'est vraiment un code dégueulasse!

    ne le prends pas mal (je ne te jette pas la pierre);


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

Discussions similaires

  1. Échappement des guillemets en PHP 5
    Par leomat dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/11/2007, 11h28
  2. [VBA] Syntaxe avec des guillemets
    Par Gabout dans le forum VBA Access
    Réponses: 12
    Dernier message: 17/04/2007, 13h48
  3. [Tableaux] syntaxe des guillemets
    Par tioseb dans le forum Langage
    Réponses: 13
    Dernier message: 31/01/2006, 14h35
  4. [C#] Prob IndexOf sous Pocket Pc avec des guillemets
    Par freddyboy dans le forum Windows Mobile
    Réponses: 7
    Dernier message: 10/06/2004, 09h57
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

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