Ver Mensaje Individual
  #9 (permalink)  
Antiguo 07/11/2006, 15:25
MikiBroki
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años, 9 meses
Puntos: 8
Ya he dado con el problema (me estaba picando la curiosidad con este tema )

Partiendo del siguiente código:

Código:
<HTML>
<HEAD>

<script language="javaScript">

function marcarempleado()
{
alert( document.miform.nempleado );
//alert( document.miform.nempleado.length );

/*			
var num_elementos = document.getElementsByName("nempleado").length;			
for( var contador=0; contador < num_elementos; contador++ )
{
if( document.getElementsByName("nempleado")[contador].checked  == true )
alert( "está marcado el radio [" + contador + "] y su valor es [" + document.getElementsByName("nempleado")[contador].value + "]" );
}
}
*/
</script>


</HEAD>


<BODY>
<form name="miform">
<input type="radio" name=nempleado value=11       onclick="marcarempleado()">
<input type="radio" name=nempleado value=22 onclick="marcarempleado()">
<input type="radio" name=nempleado value=33 onclick="marcarempleado()">
</form>
</BODY>

</HTML>

La clave está en que si tienes varios radio, el alert te devolverá un "[object NodeList]" (digamos que es un array de objetos radio). Pero si tienes un sólo radio devolverá simplemente "[object]", o lo que es lo mismo el único objeto radio existente.

Esto lo verás así en Firefox, porque el "genial" IE siempre devolverá "[object]", sin indicarnos de qué tipo es...

Para continuar con el ejemplo comenta el primer alert y descomenta el segundo: si tenemos digamos 3 radio, "length" devolverá 3 (el número de objetos radio en el array devuelto), pero si hay un sólo radio "length" devuelve undefined... porque al hacerse sobre un objeto, éste no tiene dicha propiedad.

¿Entonces cómo recorrer los radio?: comenta ambos alert y descomenta el resto del script.

Un saludo ;)

Última edición por MikiBroki; 07/11/2006 a las 15:50