2009-06-09 42 views
21

Ich habe versucht, einen neuen Wert in die ausgeblendete Eingabe und das Kontrollkästchen eines Eingabeformulars zu vergeben. Es funktioniert gut in Firefox, aber nicht in IE (ich verwende IE 7). Weiß jemand, was mit meinem Code falsch ist?document.getElementById(). Value und document.getElementById(). Checked funktioniert nicht für IE

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; 
+2

Can not Sie beseitigen die angenommene Antwort? Es ist einfach falsch! –

+0

Ich finde die Antworten mit jQuery extrem amateurhaft, wenn Fragen gezielt nach Javascript gefragt werden. – theoutlander

Antwort

-5

Werfen Sie einen Blick auf jQuery, eine Cross-Browser-Bibliothek, die Ihr Leben viel einfacher macht.

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

getElementById und value, checked werden von jedem Browser unter der Sonne unterstützt. jQuery ist nicht die Antwort auf alles in der Welt, und dieses Problem erfordert es kaum. –

+6

@ Paolo - Stimmt, aber in Anbetracht der elementaren Natur der Frage, es ist wert anzunehmen, dass der Fragesteller nicht bewusst ist, wie viel Zeit er sparen könnte, indem ich es benutze, also glaube ich nicht, dass dies wirklich einen Verweis verdient. – karim79

+3

@Paolo - true alle Browser implementieren es ... aber IE (6/7) implementiert document.getElementById() falsch und jQuery vermeidet die Fehler durch Heuristiken für IE. http://webbugtrack.blogspot.com/2007/08/bug-152-geelementembidid-returns.html aber in diesem Fall glaube ich nicht, dass diese Methode das Problem ist. – scunliffe

5

Der Code, den Sie arbeiten klebte sollte ... Es muss etwas, was wir hier nicht sehen.

Check this out. Arbeiten für mich gut auf IE7. Wenn Sie den Antrag stellen, sehen Sie die Variable, die in der URL übergeben wurde.

2

Jin Yong - IE has an issue with polluting the global scope mit dem Objekt Verweise auf alle DOM-Elemente mit einem "namen" oder "id" -Attribut auf der "initial" Seite Last eingestellt.

Daher können Probleme aufgrund Ihres Variablennamens auftreten.

Versuchen Sie dies und sehen Sie, ob es funktioniert.

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

Es gibt eine Chance (in der ursprünglichen Code) ist, dass der IE den Wert der Eingabe in einen Verweis auf das eigentliche Element zu setzen versucht (ignoriert den Fehler), sondern lässt Sie ohne neuen Wert.

Beachten Sie, dass in IE6/IE7 Fall für die Benennung von Objekten keine Rolle spielt. IE glaubt, dass "foo" "Foo" und "FOO" alle dasselbe Objekt sind.

13

Bei nicht gruppierten Elementen sollten Name und ID identisch sein. In diesem Fall haben Sie den Namen "sp" und die ID "sp_100" angegeben. Tun Sie das nicht, tun Sie es wie folgt aus:

HTML:

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

Javascript:

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

Weitere Details

besuchen Sie bitte: http://www.impressivewebs.com/avoiding-problems-with-javascript-getelementbyid-method-in-internet-explorer-7/

Verwandte Themen