Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2011, 13h16   #1
Invité de passage
 
Inscription : août 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 4
Points : 1
Points : 1
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 :
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):
Citation:
<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:
Citation:
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
johnb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 13h20   #2
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Code :
v_innerhtml = v_innerhtml + '<option value="'+v_listdepinsee[inc]+'">'+v_listdepinsee[inc]+' - '+v_listdeplibelle[inc]+'</option>';
essaye de remplacer ta ligne par ça :

Code :
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)
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 13h23   #3
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
bonjour,

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

Utilise les fonctions DOM :
http://javascript.developpez.com/tut...ge=page_5#LV-B
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 14h21   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 16h11   #5
Invité de passage
 
Inscription : août 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 4
Points : 1
Points : 1
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.
johnb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 23h16   #6
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 774
Points : 4 774
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 :
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>
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h55.


 
 
 
 
Partenaires

Hébergement Web