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 :

[Ajax]Dom et FirstChild


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut [Ajax]Dom et FirstChild
    Bonjour tout le monde,

    J'ai petit problème sur IE (Firefox tout vas bien mais bon....)

    En fait, en faisant de l'Ajax, je récupère donc la réponse XML (un arbre DOM(je débute en DOM) générer en PHP5).

    Je récupere donc un petit bout d'XML que je parse et c'est ici que le problème arrive :

    Le bout XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0"?>
    <main>
    <elements><id>test6</id>
    <select>
    <option value="t1">coucouc</option>
    <option value="t2">Test 2</option>
    <option value="t3">Test 3</option>
    </select>
    </elements>
    </main>
    Le but étant de mettre à jour une selectbox...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select=elems[i].getElementsByTagName('select')[0];
    var lesoptions=select.childNodes; 
    for(var i=0;i<lesoptions.length;i++)
    {
    if (lesoptions[i].firstChild)
     element.options[i]=new Option(lesoptions[i].firstChild.nodeValue,lesoptions[i].getAttribute("value"));
    }
    Je pensais ca pouvais marcher, mais sous IE il perd le premier élément!
    J'ai trouvé cela :
    http://javascript.developpez.com/faq...M#DOMIEFirefox

    mais je ne trouve pas de solution....

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    tu peux expliquer ce que tu cherches à obtenir avec ces 2 lignes?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (lesoptions[i].firstChild)
    element.options[i]=new Option(lesoptions[i].firstChild.nodeValue,lesoptions[i].getAttribute("value"));
    }

  3. #3
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    La première ligne evite l'erreur et la deuxième remplit un select dans la page....

    Ca fonctionne trés bien sous Firefox mais pas sous ie, sous IE le premier firsChild génère une erreur alors que les autres non....

    :s

    ps: effectiviement je n'avais pas préciser que element est un <select>

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est ton test firstChild qui fais planter ?
    a ce moment la fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(lesoptions[i].childNodes.length>0)

  5. #5
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Nan nan ce n'est pas le test sur firstChild c'est le premier passage dans la boucle, le premier firstChild plante c'est pour ca que je teste avant pour eviter l'erreur mais je perds donc la valeur du premier firstChild

    En gros si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var lesoptions=select.childNodes; 
    for(var j=0;j<lesoptions.length;j++)
    {
    if (lesoptions[j].firstChild)
         element.options[j]=new Option(lesoptions[j].firstChild.nodeValue,lesoptions[j].getAttribute("value"));
    else
       alert("passage "+j);
    }
    Sous IE j'ai un alert qui m'affiche "passage 0" sous FireFox tout vas bien ....

    Sinon, est ce que le bouclage dans mon XML est la bonne solution ? N'y a t il pas une autre solution ?

    Merci encore

  6. #6
    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 ..:: Atchoum ::..
    Sous IE j'ai un alert qui m'affiche "passage 0" sous FireFox tout vas bien ....
    C'est bien louche comme comportement. Tu as ton exemple en ligne? A un endroit ou on puisse le récuperer....

    Citation Envoyé par ..:: Atchoum ::..
    Sinon, est ce que le bouclage dans mon XML est la bonne solution ? N'y a t il pas une autre solution ?
    Non, c'est la seule solution. D'un manière ou d'une autre, tu devras boucler...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Si ça peut aider, parce que mon problème était très proche je pense

    http://www.developpez.net/forums/sho...ght=firstchild

Discussions similaires

  1. [AJAX] append : exécuter script et style
    Par Defkarz dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 18/01/2008, 17h21
  2. [DOM] proprité firstChild
    Par yassou dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/09/2007, 11h23
  3. [AJAX] appel Ajax DOM
    Par MALAGASY dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/09/2006, 13h16
  4. [DOM] [Ajax]responseXML et méthodes DOM
    Par Herode dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/07/2006, 20h19
  5. [Ajax] Prob passage de param. dans boucle [DOM]
    Par narnou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/02/2006, 16h54

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