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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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 confirmé

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    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 684
    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 684
    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 confirmé

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par krapno
    o = document.all.item_id;
    Pas de document.all en Firefox. Passe par getElementById.

  5. #5
    Membre confirmé 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
    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 684
    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 684
    Par défaut
    tu fais en même temps un appendChild et un add?

    ça n'a pas grand sens...

  7. #7
    Membre confirmé 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
    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 684
    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 684
    Par défaut
    mais pas add
    je t'ai pourtant expliqué ce qu'il en était...

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

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