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 innerhtml avec IE


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut Problème innerhtml avec IE
    Bonjour,

    j'ai une fonction javascript déclenchée lorsqu'un utilisateur sélectionne une région dans une liste déroulante, qui permet de modifier dynamiquement le contenant d'une autre liste déroulante contenant une liste de départements, afin de n'afficher que les départements de la région sélectionnée.

    Cette fonction fonctionne correctement avec Firefox, mais ne fonctionne pas avec Internet Explorer. Avec IE, la liste déroulante des départements devient vide dès que je sélectionne une région (donc dès le premier appel de la fonction javascript).


    Le code de la fonction javascript est le suivant:

    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
    function filtrerDepartement()
    {
         var v_list_reg_insee = document.getElementById('lle_reg_insee');
        var v_reg_insee = v_list_reg_insee.options[v_list_reg_insee.selectedIndex].value;
        var v_innerhtml='<option value="" selected="selected"></option>';
        var inc=0;
        for(inc=0;inc<v_listdeplibelle.length;inc++){
            if(v_reg_insee == v_listdepreginsee[inc] || v_reg_insee=='00' || v_reg_insee=='')
            {
     
                v_innerhtml = v_innerhtml + '<option value="'+v_listdepinsee[inc]+'">'+v_listdepinsee[inc]+' - '+v_listdeplibelle[inc]+'</option>';
            }
        }
     
        document.getElementById('lle_dep_insee').innerHTML=v_innerhtml;
    }


    A des fins de tests, j'ai affecté en dur la valeur suivante à la valeur "v_innerhtml" avant de l'affecter (pour remplacer la boucle for):
    <OPTION value="68">68 - HAUT-RHIN</OPTION>
    Lorsque je vérifie la valeur de la propriété "innerHTML" de l'objet en question en utilisant le debugger javascript (shift+F12 dans IE8), la valeur est la suivante:
    68 - HAUT-RHIN</OPTION>


    Il semble donc y avoir un troncage, étant donné que le début de la balise (<option ...) est supprimé.


    Avez-vous une idée ?

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v_innerhtml = v_innerhtml + '<option value="'+v_listdepinsee[inc]+'">'+v_listdepinsee[inc]+' - '+v_listdeplibelle[inc]+'</option>';
    essaye de remplacer ta ligne par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    v_innerhtml = v_innerhtml + '<option value='+v_listdepinsee[inc]+'>'+v_listdepinsee[inc]+' - '+v_listdeplibelle[inc]+'</option>';
    (aucune garantie du résultat, je travaille jamais avec IE)

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    ne pas utiliser innerHTML pour créer une liste !!!!!

    Utilise les fonctions DOM :
    http://javascript.developpez.com/tut...ge=page_5#LV-B

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ceci dit, les listes déroulantes liées avec Ajax, c'est bien !
    - Web 2.0, allez plus loin avec AJAX et XMLHttpRequest -> Listes liées

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Par défaut
    Je vous remercie pour vos réponses.

    Pour répondre à "Sharcoux":
    Cette syntaxe ne permet pas de corriger le problème, j'ai exactement le même comportement.


    J'ai trouvé le lien suivant sur le site du support Microsoft indiquant qu'un BUG existe dans IE concernant la propriété "innerHTML" des objets de type "select":
    http://support.microsoft.com/default...b;en-us;276228


    J'ai pu faire fonctionner mon code en utilisant leur solution de contournement, à savoir encapsuler l'objet "select" dans une division <div id="nomdiv"></div> et en modifiant la propriété "innerHTML" de la division "nomdiv" et non directement celle de l'objet "select".


    Si j'ai du temps par la suite j'essaierai de mettre en place une autre solution, comme l'utilisation des fonctions DOM proposé plus haut, qui parait tout de même plus propre.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Citation Envoyé par johnb Voir le message
    J'ai trouvé le lien suivant sur le site du support Microsoft indiquant qu'un BUG existe dans IE concernant la propriété "innerHTML" des objets de type "select":
    perso je ne considère pas cela comme un BUG

    Il n'est qu'à essayer ce code pour voir que le comportement de IE est préférable à celui de FireFox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
    <head>
    </head>
    <body>
    <select id="leselect">
      <option>Option</option>
    </select>
    <script type="text/javascript">
      var oElem = document.getElementById('leselect');
      var sHtml = '<select><option>Insertion<\/option><\/select>';
      oElem.innerHTML = sHtml;
    </script>
    </body>
    </html>

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

Discussions similaires

  1. Problème Locate avec espaces
    Par Clezio dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/03/2004, 19h06
  2. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20
  3. problèmes bizarres avec jdbc
    Par jaimepasteevy dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 12/12/2003, 12h00
  4. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02
  5. problème JSP avec JBuilder et Weblogic 7
    Par viny dans le forum JBuilder
    Réponses: 2
    Dernier message: 24/04/2003, 08h07

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