2009-06-09 18 views
21

Ho provato ad assegnare un nuovo valore nell'input nascosto e la casella di controllo di un modulo di input. Funziona bene in Firefox ma non in IE (sto usando IE 7). Qualcuno sa cosa c'è di sbagliato nel mio codice?document.getElementById(). Value e document.getElementById(). Checked non funziona per 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

Impossibile elimini la risposta accettata? È semplicemente sbagliato! –

+0

Trovo le risposte con jQuery estremamente amatoriale quando vengono poste domande specifiche per Javascript. – theoutlander

risposta

-5

Dai uno sguardo a jQuery, una libreria cross-browser che ti renderà la vita molto più facile.

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

getElementById e il valore, controllato sono supportati da ogni browser sotto il sole. jQuery non è la risposta a tutto il mondo, e questo problema lo richiede a malapena. –

+6

@Paolo - Vero, ma considerando la natura elementare della domanda, vale la pena supporre che il richiedente non è consapevole di quanto tempo potrebbe risparmiare usando, quindi non penso che questo meriti davvero un rimprovero. – karim79

+3

@Paolo - true tutti i browser lo implementano ... ma IE (6/7) implementa document.getElementById() sbagliato e jQuery evita i bug di euristica per IE. http://webbugtrack.blogspot.com/2007/08/bug-152-getelementbyid-returns.html tuttavia in questo caso non credo che questo metodo sia il problema. – scunliffe

5

Il codice incollato dovrebbe funzionare ... Ci deve essere qualcosa d'altro non stiamo vedendo qui.

Check this out. Lavorando per me bene su IE7. Quando invii, vedrai la variabile passata nell'URL.

2

Jin Yong - IE has an issue with polluting the global scope con riferimenti a oggetti a qualsiasi elementi DOM con un "nome" o attributo "id" impostato sul caricamento della pagina "iniziale".

Quindi potresti avere problemi a causa del nome della tua variabile.

Prova questo e vedi se funziona.

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

C'è una possibilità (nel codice originale) che IE tenta di impostare il valore dell'ingresso a un riferimento a tale elemento reale (ignora l'errore), ma ti lascia senza nuovo valore.

Ricordare che in IE6/IE7 il caso non ha importanza per denominare gli oggetti. IE crede che "foo" "Foo" e "FOO" siano tutti lo stesso oggetto.

13

Per gli elementi non raggruppati, nome e ID devono essere uguali. In questo caso hai dato il nome come "sp" e id come "sp_100". Non farlo, farlo in questo modo:

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; 

Per maggiori dettagli

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

Problemi correlati