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.
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" ; ou "id" ; défini au chargement de la page "initial" ;.
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" ; "Foo" ; et "FOO" ; sont tous le même objet.
[1] : http://webbugtrack.blogspot.com/2007/09/bug-162-global-namespace-pollution-in.html
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/