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] Méthode pour afficher un noeud ou un DOM document (XML) en Javascript ? [Fait]


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut [DOM] Méthode pour afficher un noeud ou un DOM document (XML) en Javascript ?
    Bonjour à tous,

    Alors voilà, je voudrais savoir si il existe une méthode (en JavaScript) qui s'applique sur un nœud (node), et qui permet l'affichage de ce nœud et de ces fils.

    Une méthode qui me permettrais de placer des fils de type html dans mon nœud (node) et de les insérer dans un div (d’une page html) à l’aide du javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(id).innerHTML = monnoeud.ma_méthode_d’affichage;
    Je sais que cette méthode existe en PHP, et que l’on peut l’appliquer sur un node ou sur un DOM Document, la voici :

    ainsi, en PHP on peu faire :

    Ce qui affiche le contenu d’un nœud et ces fils ! Je voudrais savoir si une telle méthode existe en JavaScript.

    Voilà, je vous remercie d’avance pour vos éventuelles solutions.

  2. #2
    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
    J'ai pas bien compris...
    Pourquoi ne pas passer par display ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById(id).style.display = 'none';
    document.getElementById(id).style.display = 'block'
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par Bovino Voir le message
    J'ai pas bien compris...
    Pourquoi ne pas passer par display ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById(id).style.display = 'none';
    document.getElementById(id).style.display = 'block'
    OK. Je me suis mal exprimé.

    J'ai une réponse XML (DOM) retourné par une requête AJAX.

    Ce fichier XML (cette réponse XML) contient une liste d'item, et donc ont va dire une liste de nœuds. Ces nœuds contiennent des fils (du style tableau ou paragraphe en HTML). Et donc, ces nœuds je voudrais les insérer (ainsi que leur fils) dans des div présent dans ma page HTML !

    Et je voudrais donc utiliser une méthode d'affichage du(des) nœud(s) (et de ces fils !), pour insérer cet affichage (cette chaine de caractère) dans le DIV prévu à cet effet sur ma page HTML.

    En faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(div_page_html).innerHTML = monnoeud.méthode_d’affichage_d’un_noeud;
    Je sais que l'affichage d'un noeud et de ces fils existe en PHP : c'est la méthode saveXML, qui s'applique sur noeud : echo $noeud->saveXML; va afficher le noeud et ces fils.

    Je voudrais savoir si une telle méthode d'affichage d'un noeud existe en JavaScript.

    Voilou !

  4. #4
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Tu ne peux pas le faire directement, pour la bonne raison que le DOM de ta page et le xml retourné par ta requete ne partagent pas la même API.

    Il faut que tu parcours tes noeuds xml avec les méthodes de l'api XML, et que tu recrées tes noeuds DOM cette fois avec les méthodes du DOM (qui bien souvent on pourtant le même nom que celles de l'api XML).

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Tu ne peux pas le faire directement, pour la bonne raison que le DOM de ta page et le xml retourné par ta requete ne partagent pas la même API.
    Je en comprend pas bien. Je comprend que la page XHTML ne partage pas la même API que le fichier XML, mais alors dans ce cas là, je ne peux pas stocker simplement l'affichage du nœud dans une variable ?

    Comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var texte = monnoeud.la_methode_d'affichage;

  6. #6
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    C'est assez simple pourtant:

    Si on prend l'exemple de firefox, quand tu utilises les méthodes du DOM pour ajouter un élément à la page, tu manipules les méthodes de l'api gecko qui gère l'affichage de la page.

    Mais le XML qui tu récupères de ta requete Ajax, lui, utilise les méthodes du moteur de javascript (SpiderMonkey).

    Les méthodes pour manipuler les 2 api ont les mêmes noms mais elles manipulent des objets completement différents, donc tu ne peux pas te contenter d'en prendre un et de le coller dans l'autre, il faut que tu les reconstruises tous.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut
    Je en comprend pas bien. Je comprend que la page XHTML ne partage pas la même API que le fichier XML, mais alors dans ce cas là, je ne peux pas stocker simplement l'affichage du nœud dans une variable ?

    Comme cela :

    Code :

    var texte = monnoeud.la_methode_d'affichage;

  8. #8
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Ce que tu appelles l'affichage c'est quoi? La représentation textuelle du noeud?

    Si c'est le cas, oui c'est possible. Tu sérialises ton noeud XML (via XMLSerializer sous FF, la propriété .xml du noeud sous IE) et tu l'assignes à la propriété innerHTML de ton noeud DOM, ca devrait passer.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Ce que tu appelles l'affichage c'est quoi? La représentation textuelle du noeud ?
    C'est exactement ça !

    Je veux afficher un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <item>
    <blabla>
    <p></p>
    </blabla>
    </item>
    Citation Envoyé par DoubleU Voir le message
    Tu sérialises ton noeud XML (via XMLSerializer sous FF, la propriété .xml du noeud sous IE) et tu l'assignes à la propriété innerHTML de ton noeud DOM, ca devrait passer.
    Il va falloir que je face une implémentation différente pour Firefox et IE ?

    Si c'est le cas, est-ce que tu peux me donner un exemple avec Firefox ?

  10. #10
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut
    Ok, je te remerci.

    J'avais bien vu cela. Mais le gros problème, c'est qu'il va falloir que je gère les différents navigateurs, c'est bien ça ? Comme avec les requêtes AJAX... pour lequelles j'utilise d'ailleur prototype, qui est vraiment excellent.

Discussions similaires

  1. Réponses: 15
    Dernier message: 27/11/2010, 21h42
  2. Réponses: 4
    Dernier message: 13/02/2010, 14h56
  3. Réponses: 5
    Dernier message: 23/04/2008, 15h41
  4. Réponses: 2
    Dernier message: 04/06/2006, 18h53
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

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