document.getElementById().value en document.getElementById().checked werken niet voor IE

Ik heb geprobeerd een nieuwe waarde toe te wijzen in de verborgen invoer en het selectievakje van een invoerformulier. Het'werkt prima in Firefox maar niet in IE (ik'gebruik IE 7). Weet iemand wat er mis is met mijn 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;

De code die je hebt geplakt zou moeten werken... Er moet iets anders zijn dat we hier niet zien.

[Kijk hier eens naar (http://jsbin.com/ayefe). Werkt voor mij prima op IE7. Als je submit zie je de variabele doorgegeven in de URL.

Commentaren (0)

Jin Yong - IE heeft een probleem met het vervuilen van de global scope met object referenties naar alle DOM elementen met een "name" of "id" attribuut ingesteld op de "initial" page load.

U kunt dus problemen krijgen door uw variabele naam.

Probeer dit en kijk of het werkt.

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

Er is een kans (in je originele code) dat IE probeert de waarde van de input in te stellen op een verwijzing naar dat eigenlijke element (negeert de fout) maar je achterlaat met geen nieuwe waarde.

Hou in gedachten dat in IE6/IE7 case'niet uitmaakt voor het benoemen van objecten. IE gelooft dat "foo" "Foo" en "FOO" allemaal hetzelfde object zijn.

Commentaren (0)
Oplossing

Kijk eens naar jQuery, een cross-browser bibliotheek die je leven een stuk gemakkelijker zal maken.

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