(JS) Bug avec innerHTML sous IE

Résolu/Fermé
karakopopol Messages postés 8 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 16 juin 2007 - 15 juin 2007 à 16:10
 FraGG - 10 févr. 2009 à 15:13
Bonjour.

J'ai un soucis en javascript avec la méthode 'innerHTML' :
J'essaye d'attribuer une série de choix possible à un liste déroulante. J'ai donc dans une variable javascript une chaine de caractères comprenant tous ces éléments. Lorsque que je veux affecter les options à la liste déroulante ca se passe très bien sous Mozilla, par contre sous IE ca bugge : il me vire le premier tag 'option' et donc rien ne s'affiche!!!
Je suis en train de m'arracher les cheveux!!!

Le code est surement plus explicite :

HTML :
<select name='spec' ID='spec'></select>

JS :
newoptions = '<option value="1">Val1</option><option value="2">Val2</option><option value="3">Val3</option><option value="4">Val4</option>';
document.getElementById('spec').innerHTML = newOptions;


Résultats :
Sous Mozilla :
<select name='spec' ID='spec'><option value="1">Val1</option><option value="2">Val2</option><option value="3">Val3</option><option value="4">Val4</option></select>

Sous IE :
<select name='spec' ID='spec'>Val1</option><option value="2">Val2</option><option value="3">Val3</option><option value="4">Val4</option></select>


Si quelqu'un a la solution, je suis preneur!
Merci!!!

6 réponses

Bonjour,

Merci pour la réponse précédente, ca fonctionne nikel.

Néanmois :

J'ai essayé avec un <div id="monid"></div>, pour ceux qui ne le saurait pas, c'est faisable avec un <span>.

Son avantage est qu'il ne compromet pas autant la css qu'un <div>.

Les éléments <div> s'affiche en mode "block" par defaut (voir un cours de css), tandis qu'un <span> s'affiche en mode "inline".

Donc, pas de retouches css à faire dans le cas où le formulaire est style via les css.

Il est vrai que Microchiotte Windows son copain IE sont pas au top du top mais je vous rappelle qu'un bon développeur se doit de faire en sorte qu'un site soit accessible avec les principaux navigateurs du marché.

Matt

Juste pour rire :

Démarrer Windows sans clavier PS/2 (pas avec USB) vous donne "Keyboard not found -> Press F1 to continue..."

(Faite le test c'est véridique).
8
Bien je me sent moins seul.... en fait j'ai comme d'autres ici un formulaire et dynamiquement en fonctions des champs que je "surveille" mon javascript ajoute un "div" contenant l'erreur a afficher.

Je récupère le "nodeParent" et cela marche sans problème sous tous navigateur sauf sous IE si le nodeParent est un <p></p> (alors que ça marche avec un div et un td)

Bon bah je vais chercher avec quelles autres balises cela peut marcher car avec un span comme parent j'ai le même bug je ne peut pas spécifier le innerHTML...

Bug vieux de 2003.. et la beta 2 d'IE8 l'a encore ! \o/


---------

Pour répondre a Matt, cette erreur c'est une erreur du BIOS, une puce sur ta carte mère, ça n'a aucun rapport avec windows. T'aurais bien pu démarrer linux ou autre chose ;)

Me suis retrouvé bien con y'a des années quand j'ai grillé mon controlleur clavier (bon c'était ma faute fallais pas le toucher allumé avec quelque chose de métallique......) et qu'il m'a fait ça.... (et pas de ports USB a l'époque, obligé de racheter une CM)
0
karakopopol Messages postés 8 Date d'inscription dimanche 2 janvier 2005 Statut Membre Dernière intervention 16 juin 2007
16 juin 2007 à 09:15
Personne?
0
MademoiselleL
10 juil. 2007 à 17:17
je sais pas si tu cherches encore...

c'est un bogue connu sur IE.
Microsoft a fait une excellente page de solution :
https://support.microsoft.com/fr-fr/help/276228

bonne chance
0
Bonjour,
et merci pour l'info,
Le bug est tout de même daté du 12 mai 2003,

et ils peuvent ajout IE7 à la liste ( qui s'arrête a IE5.5)

Alors que le web tant a être "2.0" qui fait de javascript la "grosse charnière", microsoft laisse
trainé des bugs vieux de plus de 4 ans...


Quelle réactivité de la part de l'entreprise n°1 mondial du logiciel, et comme ils disent

"Wouahooooo"

mardiros
0
Utilisateur anonyme
11 août 2008 à 18:27
Une honte, ça fait une heure que je cherche pour un truc aussi nul! Bravo Microsft! félicitation!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pareil ;)
0
Tout pareil -__-
Quand te decideras tu a mourrir IE ???
0
Mouais ben je suis super content !!!!

Je vient de coder une page PHP de merde pendant plus de 10 heures

17 fonctions js
9 fonctions php
4 requêtes sql

tout ça pour voir que mes innerHTML ne fonctionne pas sur IE

En fait c'est un formulaire qui verifie tout un tas de chose, et s'il retourne une erreur (aussi bien js que php) il l'ecrit dans des <Span> qui sont à coté de leur champ de texte qui a fait retourner l'erreur...

Ex

[Camp de texte "peudo"] Le pseudo doit comporté plus de 6 caracères 'lors de la saisie en JS

ou encore

[Camp de texte "peudo"] Le pseudo existe déjà 'lors du rechargement pour erreur en php

VA CHIER IE

Maintenant c'est partit pour de nouvelle recherches pour trouver la solution !! MERDE !!!
0
Bonjour,

Je ne sais pas si tu as trouvé la réponse à ton problème mais il suffit d'encapsuler ton selest dans une div. En clair (et uniquement pour IE), a chaque changement il faut recréer ton select que tu injectes dans la div avec innerHTML. C'est pas très pratique mais chez moi cela marche.
Bon courage et pour les autres lecteurs => utiliser firefox ou Opera ou les autres qui fonctionne mieux que IE
0