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 :

Trouver tous les objets d'un certain type dans un document?


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut Trouver tous les objets d'un certain type dans un document?
    Bonjour à tous!
    Voilà, je suis un gros gros débutant en javascript et en réalité je dois juste m'en servir pour réaliser un "treeview" d'un document XML avec XSL.
    Pour cela, j'ai repris un code qu'un utilisateur de ce forum avait posté dans la section XML, mais je veux complétement remanié l'affichage...

    En fait ma question est simple puisque je désirerais, à partir d'un script, pouvoir accéder à tous les objest d'un certain type dans mon document.

    Par exemple dans le treeview, j'aimerais lorsque je clique sur la balise <tr> contenant l'élément racine de mon document XML, que tous les autres objets <tr> du document prennent le style="display:none"...

    Voilà donc en clair, si vous pouviez m'aider en m'apportant quelques méthodes pour naviguer dans les objets et leur affecter de nouvelles propriétés, ça serait super sympa!

    Voilà, j'espère avoir été assez clair, merci d'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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('tr')
    retourne la collection de tr du document

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('tr').length
    sa longueur ...


    reste à boucler sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i=0;i<document.getElementsByTagName('tr').length;i++)
    pour tester le style.display
    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 du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup, j'vais tester tout ça de suite!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Euh, excuse moi mais je ne vois pas comment on fait pour accéder a un élément en particulier dans la boucle, celui correspondant à l'indice du i en fait? J'sui vraiment un gros débutant!

  5. #5
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TabTr=document.getElementByTagName('tr')
    for (i=0;i<TabTr.length;i++){
          TabTr[i].style.display=(TabTr[i].style.display=='')?'none':'';
     }
    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 !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Désolé, mais je fais remonter car je me demandais s'il était possible d'utiliser un objet "tr" bien précis quand on connait son nom, à la maniére d'un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.images["plus_principal"].src="./images/moins.gif";
    En gros, comment s'appelle la classe d'objet des "tr"? Merci d'avance!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Svp, si quelqu'un le sait...ça serait sympa!

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    tu mets un id sur ton tr bien précis, puis tu le retrouve grâce à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('ton_id_ici');

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Merci pour cette réponse!
    Par contre, dans mon cas précis, je fais une fonction appelé récursivement pour l'affichage d'un document XML et en réalité, j'ai plusieurs élément "tr" qui vont porter le même id, et je ne vois pas comment arriver à les différencier pour gérer leur affichage respectif...

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu n'as pas le droit d'avoir plusieurs éléments avec le même id. Trouve une autre solution comme l'attribut name par exemple. getElementsByName('name') te retournera une collection d'éléments.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Oui mais c'est le problème retourné à l'envers, parce que pour les noms, c'est la même chose vu que l'appel est récursif,donc à chaque appel le nom est identique...(je déteste la récursivité... )

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Bon, je fais remonter le topic car j'ai un peu avancé, mais il me reste encore et tjs ce problème d'identification d'éléments...
    Voici la partie de mon XSL qui pose un problème:
    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
     
    <xsl:when test="*"> 
        <tr>
                      <td style="display:none" name="secondaire" width="100%" align="center" class="LIGNE2" onclick="javascript:affiche_cache(this);" >
                          <img name="signe_secondaire" src="./images/plus.gif" />
                          <xsl:text> </xsl:text>
                          <xsl:attribute name="colspan"><xsl:value-of select="count(child::*)"/></xsl:attribute>
                          <b><xsl:value-of select="name()"/></b>
                          <br />(<span class="ATTRIBUT"><xsl:for-each select="@*"><b><xsl:value-of select="name()"/></b> : <i><xsl:value-of select="."/></i>  </xsl:for-each></span>)
                      </td>
        </tr>  
                    <tr id="trfinal" style="display:none" > 
                      <td name="final" width="100%" align="center" class="FERME" >
                        <xsl:apply-templates select="*"/>
                      </td>
                    </tr>
                </xsl:when>
    Cette partie est appelée plusieurs fois et au niveau du nom de l'image, cela coince! En effet, dans mon javascript je souhaite changer l'image (soit le signe + soit le signe -, suivant l'état du treeview). Seulement, si dans mon code javascript je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.images["signe_secondaire"].src=...
    Ca ne marche que pour la dernière image portant ce nom, les précédentes semblant ne pas avoir de nom justement...

    Donc voilà, si quelqu'un a une solution pour que toutes les images aient un nom bien différent que je puisse exploiter, je suis vraiment preneur, et ça serait super sympa!!! Merci d'avance!

  13. #13
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par kobe
    document.images["signe_secondaire"].src=...
    Normal, document.images['blabla'] est un vecteur d'élements. Fais une boucle dessus (for...) et pour chacune des images de ce vecteur change le src de l'image...

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Euh oui, mais je ne veux pas changer l'image pour toutes les balises en fait, seulement pour une seule(celle concerné par le déploiement de son fils), dont je ne connais pas le nom et que je ne peux identifier clairement à l'heure actuelle...

Discussions similaires

  1. Tous les objets d'un type en particulier
    Par Papy214 dans le forum C#
    Réponses: 0
    Dernier message: 20/05/2011, 10h06
  2. Trouver tous les objets d'un schéma
    Par Celestos dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 20/05/2010, 14h24
  3. Réponses: 2
    Dernier message: 09/02/2009, 14h00
  4. Comment attraper tous les noeud d'un même type dans un tableau
    Par lodan dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 01/04/2007, 16h36
  5. Rafraichissement de la fiche ainsi que de tous les objets
    Par portu dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/01/2004, 00h25

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