2009-06-09 12 views
21

Intenté asignar un nuevo valor a la entrada oculta y a la casilla de verificación de un formulario de entrada. Está funcionando bien en Firefox pero no en IE (estoy usando IE 7). ¿Alguien sabe lo que está mal con mi código?document.getElementById(). Value y document.getElementById(). Checked no funciona para 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

No se puede eliminas la respuesta aceptada? ¡Simplemente está mal! –

+0

Encuentro las respuestas con jQuery extremadamente amateur cuando se hacen preguntas específicamente para Javascript. – theoutlander

Respuesta

-5

Eche un vistazo a jQuery, una biblioteca multiproveedor que hará su vida mucho más fácil.

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

getElementById y value, checked son compatibles con todos los navegadores bajo el sol. jQuery no es la respuesta a todo en el mundo, y este problema apenas lo requiere. –

+6

@Paolo - Es cierto, pero teniendo en cuenta la naturaleza elemental de la pregunta, vale la pena suponer que el solicitante no es consciente de cuánto tiempo podría ahorrar al usarlo, por lo que no creo que esto realmente merezca una reprimenda. – karim79

+3

@Paolo - true todos los navegadores lo implementan ... pero IE (6/7) implementa document.getElementById() incorrecto y jQuery evita los errores por heurística para IE. http://webbugtrack.blogspot.com/2007/08/bug-152-getelementbyid-returns.html Sin embargo, en este caso, no creo que este sea el problema. – scunliffe

5

El código que ha pegado debe trabajar ... Tiene que haber algo más que no estamos viendo aquí.

Check this out. Trabajando para mí bien en IE7. Cuando envíe, verá la variable pasada en la URL.

2

Jin Yong - IE has an issue with polluting the global scope con referencias a objetos a los elementos DOM con un "nombre" o atributo "id" situado en la carga de la página "inicial".

Por lo tanto, es posible que tenga problemas debido a su nombre de variable.

Pruebe esto y vea si funciona.

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

Existe la posibilidad (en su código original) que IE intenta establecer el valor de la entrada a una referencia a ese elemento real (ignora el error), pero le deja sin valor nuevo.

Tenga en cuenta que en el caso IE6/IE7 no importa para nombrar objetos. IE cree que "foo", "Foo" y "FOO" son todos el mismo objeto.

13

Para elementos no agrupados, el nombre y la identificación deben ser los mismos. En este caso, dio nombre como 'sp' e id como 'sp_100'. No hagas eso, hacerlo de esta manera:

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; 

Para más detalles

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

Cuestiones relacionadas