document.getElementById().value und document.getElementById().checked funktionieren im IE nicht

Ich habe versucht, einen neuen Wert in der versteckten Eingabe und Checkbox eines Eingabeformulars zuzuweisen. Es funktioniert gut in Firefox, aber nicht in IE (ich benutze IE 7). Weiß jemand, was mit meinem Code falsch ist?

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;

Der von Ihnen eingefügte Code sollte funktionieren... Es muss etwas anderes geben, das wir hier nicht sehen.

[Check this out] (http://jsbin.com/ayefe). Bei mir funktioniert es im IE7 einwandfrei. Wenn Sie die Seite absenden, sehen Sie die in der URL übergebene Variable.

Kommentare (0)

Jin Yong - IE hat ein Problem mit der Verschmutzung des globalen Bereichs mit Objektverweisen auf alle DOM-Elemente mit einem "name" oder "id" Attribut, das beim "initial" Laden der Seite gesetzt wurde.

Daher kann es aufgrund des Namens Ihrer Variablen zu Problemen kommen.

Versuchen Sie dies und sehen Sie, ob es funktioniert.

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

Es besteht die Möglichkeit (in Ihrem ursprünglichen Code), dass der IE versucht, den Wert der Eingabe auf einen Verweis auf das aktuelle Element zu setzen (und dabei den Fehler ignoriert), Sie aber keinen neuen Wert erhalten.

Beachten Sie, dass im IE6/IE7 die Groß- und Kleinschreibung für die Benennung von Objekten keine Rolle spielt. Der IE glaubt, dass "foo" "Foo" und "FOO" alle das gleiche Objekt sind.

Kommentare (0)
Lösung

Werfen Sie einen Blick auf jQuery, eine browserübergreifende Bibliothek, die Ihnen das Leben sehr erleichtern wird.

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