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] Accès aux tableaux d'éléments


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut [DOM] Accès aux tableaux d'éléments
    Bonjour à tous,

    J'ai quelques soucis avec un xmlParser en Javascript. Un problème de syncrhonisation sans aucun doute, mais j'aimerais comprendre les dessous de l'affaire. En résumé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var xmlParser = new ActiveXObject( "Microsoft.XMLDOM" );
    if ( ! g_xmlParser.load( g_svgFile ) ) {
      alert( "Impossible de lire le SVG rafraîchi" );
    }
     
    var newGroups = svgdoc.getElementsByTagName( "g" );
    for ( var i = 0; i < newGroups.length; ++ i ) {
      var newNode = newGroups[ i ]; ####### arg !! ##########
      var newGroupLayer = newNode.getAttribute( "layer" );
       [...]
    }
    Sur la ligne marqué #### ci-dessus, l'accès au tableau (en fait à la NodeList) par l'opérateur [] marche... mal. En fait, il me renvoie souvent undefined. Souvent, mais pas toujours. Je peux contourner le problème en utilisant la méthode NodeList.item() qui marche. Mais comme je ne comprends pas pourquoi operator[] marche de temps en temps mais pas toujours, je ne peux pas être sûr que item() lui-même tout le temps...

    Quelqu'un peut-il éclairer ma lanterne sur les raisons de ce comportement ?

  2. #2
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var newGroups = svgdoc.getElementsByTagName( "g" );
    var i=0
    while (newGroups[i]) {
       var group = newGroups[i];
       // [...]
       i++
    }
    ???

  3. #3
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Ce n'est pas la manière de faire une boucle qui me pose problème, c'est la fragilité de l'opérateur [] dans le contexte indiqué

  4. #4
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Je sais bien.
    J'ai déjà rencontré le problème.
    Je l'ai résolu comme ca...

  5. #5
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    C'est encore plus inquiétant Si operator[] devient sensible au contexte en for/while, la programmation js va devenir franchement pénible...

    Je suppose que le bug (?) vient de l'interpréteur, donc du navigateur. Je travaille sous IE6 pour le code en question. Utilisais-tu IE également ???

  6. #6
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    oui
    en fait ce n'est pas une question de for, while, c'est une question de gestion du XML/HTML qui est fort hasardeuse... j'avoue ne pas comprendre non plus... en xml j'avais le pb, je l'ai résolu comme ca

Discussions similaires

  1. Accès aux éléments du DOM chargés dynamiquement
    Par baldeadama dans le forum jQuery
    Réponses: 1
    Dernier message: 27/09/2014, 15h26
  2. Réponses: 1
    Dernier message: 26/12/2013, 23h03
  3. Accès aux éléments de différentes frames
    Par metalpetsFR dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 16/09/2009, 06h36
  4. Réponses: 8
    Dernier message: 05/07/2006, 13h35
  5. [Rico] Accès aux éléments de la page de manière bizarre
    Par dodik dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 22/02/2006, 17h35

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