La Web del Programador: Comunidad de Programadores
 
    Pregunta:  15522 - PROBLEMAS CON UNA LISTA TIPO CON CHECKBOX
Autor:  Paola Soto
Holas:
Tengo una lista de familias con checkbox generada dinamicamente, si deseo borrar una familia, primero la selecciono y luego presiono boton eliminar, donde hago referencia a la siguiente funcion:
function Valida_Eliminar()
{
var checkedValue=0;
var total=0;
for (var i=0;i< document.FormGral.Familias.length; i++)
{
if (document.FormGral.Familias[i].checked==true)
{
checkedValue=document.FormGral.Familias[i].value;
total += 1;
alert(total)
break;
}
}
alert(document.FormGral.Familias.length)

if (checkedValue==0)
{
alert("Seleccione una Familia a Eliminar")
}
else
{
if (confirm("Se Dispone a Eliminar una Familia...¿Esta Seguro?"))
{
document.FormGral.Accion.value="Eliminar";
document.FormGral.submit()
}
}
El problema ocurre cuando tengo la lista de un solo valor, en ese caso si quiero eliminar no lo realiza.

  Respuesta:  J. A.
Te esta dando ese error porque cuando tienes una lista de mas de un checkbox estos se encuentran en un array y por lo tanto puedes utilizar la propiedad length del array(document.FormGral.Familias.length), sin embargo si solo hay un checkbox ya no es un array.
La forma de solucionar esto es comprobando primero si es un array de la siguiente manera:

if (typeof(document.FormGral.Familias.length) != "undefined")
alert("La lista tiene mas de un checkbox."); //Aqui pones el codigo que utilizas normalmente
else
alert("La lista tiene un solo checkbox."); //Aqui tienes que crear nuevo codigo para un solo checkbox

Con esto deberia funcionar.