Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/03/2012, 10:30
luis_vega
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 2 meses
Puntos: 12
Respuesta: no recorre todo el FOR

El problema esta en el parametro "obj" y el uso que haces que la variable con el nombre de los botones de radio.
Dices que es el nombre del formulario, siendo asi, no puedes poner simplemente "obj.obj1[0].checked" para acceder al estado de los botones de radio.
Ten en cuenta que tanto obj como obj1 son cadenas de caracteres, variables que contienen un string (el nombre del formulario y el nombre de un boton de radio), pero no son el formulario ni el boton de radio, por tanto no puedes acceder a las propieddades de esos elementos.
Tienes que obtener un objeto que referencie esos elementos a partir del nombre de los mismos. ¿Como hacer eso? con el metodo "getElementsByName" del objeto "document" que ya conoces.

El metodo "getElementsByName" retorna la coleccion de elementos con el nombre dado como argumento, asi que no necesitas el nombre del formulario. Si la pagina contuviera varios formularios, habiendo botones de radio llamados iguales, la cosa se complicaria y tendrias que usar la propiedad "form" de cada boton para saber a que formulario pertenecen y discriminar entre ellos.

Consejo: utiliza nombres de variable mas descriptivos, o cuando tus codigo crezca y se haga mas complejo te será imposible seguirlo.


La funcion que necesitas quedaria asi:

Código:
function Comprobar() {
  var str = "";
  
  var i;
  for(i=1; i<6; i++) {
    var nombreRdoButton = "preg0" + i;    
    alert(nombreRdoButton);
    var objsRdoButton = document.getElementsByName(nombreRdoButton);
    
    if (!objsRdoButton[0].checked && 
        !objsRdoButton[1].checked &&
        !objsRdoButton[2].checked &&
        !objsRdoButton[3].checked) {
      str += "Debe elegir una opcion en la pregunta " + i;
    }
  }

  if (str != "") {
    alert(str);
    return false;
  } else {
    return true;
  }
}