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 :

Utilisation de ParentNode


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Utilisation de ParentNode
    Bonjour

    J'utilise Javascript avec du SVG afin de récupérer de l'information sur différents éléments du svg.

    Pour cela j'utilise notamment la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function info(evt) {
          var bat = evt.target;
    	  alert(bat.parentNode.getAttribute("id"));
        }
    Cependant l'élément retourné ne correspond pas à un noeud parent, mais à celui d'un enfant.
    Je vous mets en exemple mon code svg :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <g  id="carte" transform="rotate(0)" onclick="info(evt)"> 
    		<g id="ensemblei">
    			<g id="i1">
    				<path style="&st29;" d="M260,3396.3l-0.2-429.1l-22-32L0.5,2957.6v424.2l182.5,19.5L260,3396.3z"/>
    				<path style="&st33;" d="M238,3364.3l-0.2-429.1l-32.8-29.9L0.5,2924.1v428l160.5,17.2L238,3364.3z"/>
    			</g>
    			<g id="i2">
    				<path style="&st29;" d="M264.1,2673.7l-0.1-428.4l-8-29l-24-29L0.5,2031.6v690.3l235.5-21.5L264.1,2673.7z"/>
    				<path style="&st33;" d="M240.1,2644.7l-0.1-428.4l-8-29L0.5,2021.3v669.4l211.5-19.3L240.1,2644.7z"/>
    			</g>
    	</g>
    </g>
    Donc il me renvoie i1 ou i2, mais pas carte.
    Comment faire pour que parentNode me renvoie bien la valeur du parent ?

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    vérifie que bat ne pointe pas sur un de tes éléments path

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    si je change l'alert par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(evt.target.parentNode.getAttribute("id"));
    le résultat est le même

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    tu n'as pas l'air de comprendre :

    si bat.parentNode.getAttribute("id") = "i1" alors tu peux être certain que le noeud enfant est :

    un des deux noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <path style="&st29;" d="M260,3396.3l-0.2-429.1l-22-32L0.5,2957.6v424.2l182.5,19.5L260,3396.3z"/>
    				<path style="&st33;" d="M238,3364.3l-0.2-429.1l-32.8-29.9L0.5,2924.1v428l160.5,17.2L238,3364.3z"/>
    il faut donc que tu remontes encore d'un cran ...

    si bat.parentNode.parentNode.getAttribute("id") , mais essaye plutot de partir
    de "<g id="i1">" pour arriver sur le parent que tu désires ...

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    D'accord.

    Dans ce cas, comment je peux faire pour remonter au premier parent. Car dans mon fichier svg, j'ai plusieurs <g> imbriqué les uns dans les autres, mais jamais un nombre constant ?

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    rien de tel qu'une bonne vielle boucle récursive
    mais il te faut un moyen d'identifier la boucle que g que tu cherches ...

  7. #7
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    while hasParent ?

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    tout a fait , mais il faut pouvoir identifier , sur quel parent il veut s'arrêter , donc la condition sera plutôt while BonParent , avec un test a l'intérieur de la boucle

    tiens pendant qu'on parle de boucle ...

    selon toi spaffy vaut-il mieux utiliser un while , ou une fonction récursive ??
    j'utilise régulièrement les fonctions plutôt que les whiles ....

  9. #9
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Dans ce cas de figure j'utiliserais un while plutot qu'une fonction récursive même en nouvelle instance.
    La sortie de la boucle while étant assurée, il n'y a pas de risque de boucler indéfiniment, et je pense que c'est plus rapide et moins gourmand .

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    merci de vos réponses. Je devrais m'en sortir maintenant.

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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