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] Interprétation du innerHTML [Fait]


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Par défaut [DOM] Interprétation du innerHTML
    Bonjour à tous,

    Voici mon problème : je récupère en PHP une actualité stocké dans une base pour la stocker en Javascript dans un tableau.
    Je triche un peu en créant mon tableau Javascript directement via mon PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $tabTxt = 'new Array(';//Chaine du texte de l actu (tableau js)
     
    //Boucle sur mes actus		
    foreach ($resultat as $cle => $valeur)
    {
      $tabTxt .= '"'.$valeur["description"].'",';
    }
    $tabTxt .= '"'.$description.'")';
    Puis, dans mon JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tabTxt = <?= $tabTxt ?>;
    Ensuite, je crée des div en JavaScript puis j'y intègre mon atcualité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    txtDiapo = document.createTextNode(tabTxt[i]);
    ...
    Ce code est à peu près fonctionnel, mis à part mes deux soucis :
    -Les balises HTML sont affichés dans ma div, et non interprétées, comment faire?
    -Mon actualité est entré dans ma base via une textarea, le problème est que si j'insère un saut de ligne dans mon texte, j'aurais un saut de ligne dans mon Array et mon code ne marchera plus...

    Je ne sais pas si j'ai été explicite, mais merci de répondre à mon problème

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    tu crées un noeud texte, donc c'est normal que ce ne soit pas interprété
    si tu veux conserver ta moulinette alors il faut insérer ton code par un innerHTML

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Ou via les instructions DOM ...

    A+

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    hmm en fait j'ai cru qu'il parlait d'une TABLE HTML, pas d'un Array... du coup je ne comprend pas la question

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Si si : c'est bien le même problème (sauf qu'il ne s'agit pas de table HTML : les infos sont juste stockées dans un Array) :
    envoyer du code dans un textNode, sauf que ce code contient des balises HTML qui, du coup, ne sont pas interprétées.
    Même remède(s), donc ...

    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Par défaut
    En fait, j'ai simplement récuperer le diaporama Vertical sur dvlpez.com, fait par auteur :
    http://www.developpez.net/forums/d54...extes-dimages/

    Du coup, plutot que de créer un textNode, faut que je fasse une div avec son innerHTML, mais ça bug aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    divTxt = document.createElement("div");
    divTxt.innerHTML = tabTxt[i];
    Ca fonctionne comme ça, merci beaucoup... je continuerai les tests demain matin avant de mettre le topic en résolu

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Par défaut
    Donc tout va bien pour mon premier problème, le code HTML est désormais intérprété...

    Par contre, j'ai toujours ce bug quand je récupère mon actualité et qu'il y a un saut de ligne : cela met mon saut de ligne dans mon tableau JavaScript, qui du coup ne sait plus quand s'arreter.

    Voici le code source qui génère l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nouvelle actu</P>
    <P>&nbsp;</P>
    <P>New para</P><br>Cliquer pour lire l'article","");
    Alors que je devrais avoir
    nouvelle actu</P><P>&nbsp;</P><P>New para</P><br>Cliquer pour lire l'article","");
    EDIT : J'ai supprimé tous les retours chariots à l'aide de la fonction PHP pregreplace mais je ne sais pas si c'est la meilleure solution... au moins elle fonctionne
    $texte= preg_replace("(\r\n|\n|\r)",'',$texte);

  8. #8
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    de tête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taChaine.replace(/\n\r/g," ");
    tu remplaces les sauts de ligne par un espace

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 178
    Par défaut
    Oui, c'est l'équivalent en JavaScript, mais c'est pareil pour moi en fait...

    Merci bien

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

Discussions similaires

  1. [DOM] Interpréter du HTML sans innerHTML
    Par Bisûnûrs dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 04/02/2009, 08h42
  2. [DOM] pb execution innerHTML sous firefox
    Par durthu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/09/2007, 11h55
  3. [DOM] getElementById et InnerHtml
    Par lekunfry dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/08/2007, 08h25
  4. [DOM] Editer l'innerHTML d'une popup
    Par thomzon dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/06/2007, 12h20
  5. [DOM] createElement VS innerHTML
    Par Gruik dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 07/01/2007, 15h41

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