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 :

Problème avec createElement et option sous Firefox


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut Problème avec createElement et option sous Firefox
    bonjour,

    je génère un <select> dynamiquement avec javascript et une source XML, la fonction suivante fonctionne parfaitement sous IE mais pas sous Firefox, ce pourquoi je sollicite votre aide, en vous remerciant par avance, voici ma fonction:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    o = document.all.item_id;
    while (o.options.length){
     o.options.remove(0);
    }
    o.options.remove(0);
    oOption = document.createElement("OPTION");
    oOption.value = "";
    oOption.text = "Select an item ...";
    o.add(oOption);
    var itemsxml = document.createElement("XML");
    itemsxml.async = false;
    XMLSRC = "module_xml.asp?keywords=" + keywords;
    itemsxml.load(XMLSRC);
    var items = itemsxml.selectNodes("//item");
    if (items.length > 0){
     for(var i = 0; i < items.length; i++) { 
      oOption = document.createElement("OPTION");
      oOption.value = items.item(i).selectSingleNode("item_id").text;
      oOption.text = items.item(i).selectSingleNode("item_name").text;
      o.add(oOption);
     }
     o.disabled=false;
    } else {
     o.options.remove(0);
     oOption = document.createElement("OPTION");
     oOption.value = "";
     oOption.text = "No corresponding item ...";
     o.add(oOption);
     o.disabled=true;
    }
    Cordialement

  2. #2
    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
    Ca c'est pas bon sous firefox. Il faut utiliser Ajax pour aller chercher ton document XML.
    var itemsxml = document.createElement("XML");
    itemsxml.async = false;
    XMLSRC = "module_xml.asp?keywords=" + keywords;
    itemsxml.load(XMLSRC);
    Sinon, le nom des balises doit être en minusucules dans les méthodes createElement....

  3. #3
    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
    la méthode add requiert un 2e argument;

    ou ça se complique, c'est que:
    Ffx accepte "null" mais pas IE;
    IE accepte "false" mais pas Ffx;
    finalement, undefined met tout le monde d'accord;

  4. #4
    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 krapno
    o = document.all.item_id;
    Pas de document.all en Firefox. Passe par getElementById.

  5. #5
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    bonjour, et merci pour vos réponses,

    alors j'ai remplacé les majuscules par des minuscules et remplacé:

    var o = document.all.item_id;
    par
    var o = document.getElementById("item_id");

    o.options.remove(0);
    par
    o.remove(0);

    mais pas

    o.add(oOption);
    par des
    o.add(oOption,'undefined');

    car o.add(oOption); marche sous IE et Firefox (voir code suivant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    oOption = document.createElement("option");
    o.appendChild(oOption);
    oOption.value = "";
    oOption.text = "Select an item ...";
    o.add(oOption);
    ensuite vous me parlez de Ajax (une nouvelle lessive ? ) alors j'ai fais quelques recherches mais je ne parviens pas à trouver un exemple simple correspondant à ce que je veux faire dans la partie suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var itemsxml = document.createElement("xml");
    itemsxml.async = false;
    XMLSRC = "module_xml.asp?keywords=" + keywords;
    itemsxml.load(XMLSRC);
    var items = itemsxml.selectNodes("//item");
    voici la version mise à jour de ma fonction:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    function Search_Item(keywords){
     if (keywords.length >= 4){
      var o = document.getElementById("item_id");
      var itemsxml = document.createElement("xml");
      itemsxml.async = false;
      XMLSRC = "module_xml.asp?keywords=" + keywords;
      itemsxml.load(XMLSRC);
      var items = itemsxml.selectNodes("//item");
      if (items.length >= 0){
       while (o.options.length) {
        o.remove(0);
       }
       oOption = document.createElement("option");
       o.appendChild(oOption);
       oOption.value = "";
       oOption.text = "Select an item ...";
       o.add(oOption);
       for(var i = 0; i < items.length; i++) { 
        oOption = document.createElement("option");
        o.appendChild(oOption);
        oOption.value =  items.item(i).selectSingleNode("item_id").text;
        oOption.text = items.item(i).selectSingleNode("item_name").text;
        o.add(oOption);
       }
       o.disabled=false;
      } else {
       o.remove(0);
       oOption = document.createElement("option");
       o.appendChild(oOption);
       oOption.value = "";
       oOption.text = "No corresponding item ...";
       o.add(oOption);
       o.disabled=true;
      }
     }
    }
    et un exemple de source xml que je veux charger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <items>
    <item><item_id>1</item_id><item_name>Mon item 1</item_name></item>
    <item><item_id>2</item_id><item_name>Mon item 2</item_name></item>
    <item><item_id>3</item_id><item_name>Mon item 3</item_name></item>
    </items>
    merci pour votre aide, j'espère en même temps que ces syntaxes en aideront d'autres

  6. #6
    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 fais en même temps un appendChild et un add?

    ça n'a pas grand sens...

  7. #7
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par javatwister
    tu fais en même temps un appendChild et un add?

    ça n'a pas grand sens...
    oui c'est vrai, appendChild marche pour les 2 navigateurs mais pas add, je n'utilise plus que appendChild maintenant mais je n'ai toujours pas trouvé comment récupérer mes données XML

  8. #8
    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
    mais pas add
    je t'ai pourtant expliqué ce qu'il en était...

  9. #9
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par javatwister
    je t'ai pourtant expliqué ce qu'il en était...
    oui, j'ai du avoir un problème de cache en fait

  10. #10
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    bon j'ai essayé ceci pour charger ma source XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    XMLSRC = "module_xml.asp?keywords=" + keywords;
    xmlDoc = new XMLHttpRequest();
    xmlDoc.overrideMimeType('text/xml');
    xmlDoc.open('GET', XMLSRC, false);
     xmlDoc.send(null);
    if (this.xmlDoc.readyState == 4) itemsxml = xmlDoc.responseXML.documentElement;
    var items = itemsxml.responseXML.selectNodes("//item");
    mais j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    itemsxml.responseXML has no properties
    çà m'éverve çà m'énerve, 90% des exemples que je trouve sur Internet sont pour IE ou ne sont pas clairs au secours !

  11. #11
    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 krapno
    çà m'éverve çà m'énerve, 90% des exemples que je trouve sur Internet sont pour IE ou ne sont pas clairs au secours !

    http://javascript.developpez.com/faq...jax.asynchrone

  12. #12
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    il me faut une deuxième fusée ??
    désolé me cette définition de XHR ne m'aide absoluement pas à comprendre ...

  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 krapno
    il me faut une deuxième fusée ??
    désolé me cette définition de XHR ne m'aide absoluement pas à comprendre ...
    Non, une seule.... Mais il faut utiliser onreadystatechange.

  14. #14
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    alors j'ai contacté la NASA et de toute façon je n'ai pas le budget pour une autre fusée donc j'ai écris ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    XMLSRC = "module_xml.asp?keywords=" + keywords;
    xmlDoc = new XMLHttpRequest();
    xmlDoc.overrideMimeType('text/xml');
    xmlDoc.open("GET", XMLSRC, false);
    xmlDoc.onreadystatechange = function() {   
     if (this.xmlDoc.readyState == 4) {
      var items = xmlDoc.responseXML.documentElement.selectNodes("//item");
     }
    }   
    xmlDoc.send(null);
    et Firefox me dit d'alle rme faire voir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur: items is not defined
    je pète un câble dans 5 minutes

  15. #15
    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
    Points : 3 239
    Points
    3 239
    Par défaut
    et c'est pas mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.responseXML.documentElement.getElementsByTagName("item");
    ?

  16. #16
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    en fait l'erreur provient de la méthode:


  17. #17
    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
    Points : 3 239
    Points
    3 239
    Par défaut
    C'est bien ce que je dis : items ne vaut "undefinied", car selectNodes n'existe pas sour FF.
    Essaie ce que j'ai mis à la palce de ce que tu as mis pour voir...

  18. #18
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    syntaxe actualisée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    xmlDoc.onreadystatechange = function() {   
     if (this.xmlDoc.readyState == 4) {
      var items = xmlDoc.responseXML.documentElement.getElementsByTagName("item");
     }
    }   
    xmlDoc.send(null);
    j'obtiens items is not defined sur la ligne suivante et qui est:

    if (items.length >= 0){ ...

  19. #19
    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
    Points : 3 239
    Points
    3 239
    Par défaut
    Ah sorry...
    et si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlDoc.responseXML.getElementsByTagName("item");
    ?

  20. #20
    Membre régulier Avatar de krapno
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par FremyCompany
    Ah sorry...
    et si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlDoc.responseXML.getElementsByTagName("item");
    ?
    pareil

    si je déclare items plus en amont avec un
    var items;

    j'obtiens un
    Erreur: items has no properties

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème onHistoryChanged avec GTW 1.4 sous firefox
    Par feonix dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 23/11/2007, 11h13
  2. Xmlhttprequest, problème avec IE... et pas sous Firefox
    Par Saiyan dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 25/01/2006, 14h47
  3. Problème avec la librairie rfunc sous Firebird
    Par yayelix dans le forum SQL
    Réponses: 4
    Dernier message: 17/05/2005, 16h49
  4. problème avec une page web sous firefox!
    Par 3psilOn dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 24/11/2004, 11h49
  5. Problème avec le port série sous Windows XP
    Par didou2dek dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/09/2003, 19h50

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