2009-06-09 14 views
21

Próbowałem przypisać nową wartość do ukrytego wejścia i pole wyboru formularza wejściowego. Działa dobrze w Firefoksie, ale nie w IE (używam IE 7). Czy ktoś wie, co jest nie tak z moim kodem?document.getElementById(). Wartość i document.getElementById(). Sprawdzone nie działa dla 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 eliminujesz zaakceptowaną odpowiedź? To po prostu złe! –

+0

Znajduję odpowiedzi z jQuery bardzo amatorsko, gdy pytania są zadawane specjalnie dla Javascript. – theoutlander

Odpowiedz

-5

Spójrz na jQuery, bibliotekę z wieloma przeglądarkami, która znacznie ułatwi Ci życie.

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

getElementById i wartość, zaznaczone są obsługiwane przez każdą przeglądarkę pod słońcem. jQuery nie jest odpowiedzią na wszystko na świecie, a ten problem prawie go nie wymaga. –

+6

@Paolo - To prawda, ale biorąc pod uwagę elementarną naturę pytania, warto założyć, że osoba pytająca nie jest świadoma, ile czasu może zaoszczędzić, używając go, więc nie sądzę, że to naprawdę zasługuje na naganę. – karim79

+3

@Paolo - prawda, że ​​wszystkie przeglądarki go implementują ... ale IE (6/7) implementuje document.getElementById() niepoprawnie, a jQuery unika błędów przez heurystykę dla IE. http://webbugtrack.blogspot.com/2007/08/bug-152-getelementbyid-returns.html jednak w tym przypadku nie wierzę, że ta metoda jest problemem. – scunliffe

5

Kod wklejony powinno działać ... Tam musi być coś innego, nie widać tutaj.

Check this out. Praca dla mnie dobra na IE7. Po przesłaniu zobaczysz zmienną przekazaną w adresie URL.

2

Jin Yong - IE has an issue with polluting the global scope z odniesieniami sprzeciw wobec każdego z elementów DOM „nazwa” lub atrybut „id” ustawiony na „wstępnym” strona obciążenia.

W związku z tym mogą pojawić się problemy związane z nazwą zmiennej.

Spróbuj tego i sprawdź, czy działa.

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

Jest szansa (w oryginalnym kodzie), że IE próbuje ustawić wartość na wejściu do odniesienia do tego rzeczywistego elementu (ignoruje błąd), ale pozostawia się bez nowej wartości.

Należy pamiętać, że w przypadku IE6/IE7 nie ma znaczenia dla nazwania obiektów. IE uważa, że ​​"foo" "Foo" i "FOO" to ten sam przedmiot.

13

Dla elementów, które nie są zgrupowane, nazwa i identyfikator powinny być takie same. W tym przypadku nadałeś nazwę jako "sp", a id jako "sp_100". Nie rób tego, zrób to tak:

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; 

Więcej szczegółów

prosimy odwiedzić: http://www.impressivewebs.com/avoiding-problems-with-javascript-getelementbyid-method-in-internet-explorer-7/

Powiązane problemy