11548 sujets

JavaScript, DOM et API Web HTML5

Dans IE7, mes objets <input type="radio"> créés comme ceci
elem=document.createElement('input');
elem.type = 'radio' ;
ne fonctionnent pas, alors qu'ils sont parfaitement fonctionnels sous Firefox.

Est-ce un bug ? Les 'input' des autres types sont semble-t-il parfaitement fonctionnels eux !
Modifié par sagitaire (10 Nov 2006 - 14:12)
Merci pour la suggestion.
2 choses toutefois :
1° innerHTML n'est pas dans la norme : je désire donc ne pas l'utiliser.
2° nous avons utilisé ce hack
document.createElement('<input type="radio" name="r1" />') pour IE6 en faisant le test
if (window.XMLHttpRequest) => FF
else if(window.ActiveXObject) ==> IE
mais IE7 répond répond bien à la première condition !!!
Il semble donc que microsoft ait corrigé le tir et n'utilise plus un objet ActiveX !?
sagitaire a écrit :

1° innerHTML n'est pas dans la norme : je désire donc ne pas l'utiliser.

certe...
mais...
a écrit :

document.createElement('<input type="radio" name="r1" />')

est bien pire.

Il y a fort à parier qu'innerHTML sera normalisé un jour, (supporté par ie firefox et opera), mais que le createElement d'IE sera corrigé avant (tellement c'est une faute)... et donc cette syntaxe est moins pérenne (à mon humble avis)
Modérateur
Rebonjour,

Comme ceci non ? Smiley smile

var oInput = document.createElement('input');
oInput.setAttribute('type','radio');
document.getElementsByTagName('body')[0].appendChild(oInput);
oInput.setAttribute('checked','checked');
D'après mes souvenirs, tu dois déclarer checked après l'insertion dans le document pour que ça fonctionne sous IE.
Malheureusement, dans mon environnement en tous cas, cela ne fonctionne pas.
J'ai résolu mon problème en utilisant innerHTML pour les navigateurs IE.
Cela fonctionne, mais c'est intellectuellement insatisfaisant !
Merci à tous pour votre aide.