document.getElementById().value et document.getElementById().checked ne fonctionnent pas pour IE

J'ai essayé d'attribuer une nouvelle valeur à l'entrée cachée et à la case à cocher d'un formulaire de saisie. Cela fonctionne bien dans Firefox mais pas dans IE (j'utilise IE 7). Quelqu'un sait-il ce qui ne va pas dans mon code ?

HTML :

<input type="hidden" id="msg" name="msg" value="" style="display:none"/>
<input type="checkbox" name="sp" value="100" id="sp_100">

Javascript :

var Msg="abc";
document.getElementById('msg').value = Msg;
document.getElementById('sp_100').checked = true;

Le code que vous avez collé devrait fonctionner... Il doit y avoir quelque chose d'autre que nous ne voyons pas ici.

(Vérifiez ceci) (http://jsbin.com/ayefe). Cela fonctionne bien pour moi sur IE7. Lorsque vous soumettez, vous verrez la variable passée dans l'URL.

Commentaires (0)

Jin Yong - [IE a un problème de pollution de la portée globale][1] avec des références d'objets à tout élément DOM avec un attribut "name&quot ; ou "id&quot ; défini au chargement de la page "initial&quot ;.

Il se peut donc que vous ayez des problèmes dus au nom de votre variable.

Essayez ceci et voyez si cela fonctionne.

var someOtherName="abc";
//  ^^^^^^^^^^^^^
document.getElementById('msg').value = someOtherName;
document.getElementById('sp_100').checked = true;

Il est possible (dans votre code d'origine) qu'IE tente de définir la valeur de l'entrée comme une référence à cet élément réel (en ignorant l'erreur) mais ne vous laisse pas de nouvelle valeur.

Gardez à l'esprit que dans IE6/IE7, la casse n'a pas d'importance pour nommer les objets. IE considère que "foo&quot ; "Foo&quot ; et "FOO&quot ; sont tous le même objet.

[1] : http://webbugtrack.blogspot.com/2007/09/bug-162-global-namespace-pollution-in.html

Commentaires (0)
Solution

Jetez un œil à [jQuery][1], une bibliothèque multi-navigateurs qui vous facilitera grandement la vie.

var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');

[1] : http://www.jquery.com/

Commentaires (4)