Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/01/2012, 23:56
dubafek
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: corregir formulario con arrays

Hola,
mira varias cosas:
- donde tienes un if seguido de un else if, la condición 'seleccionada' está demás porque ya estás dentro de un if que necesitaba estar seleccionada como true.
- En el else if te falta un paréntesis.
- En sí, la secuencia lógica que cuenta las preguntas está mala (bueno por eso es por lo que preguntabas). Por ejemplo, cuentas todas las alternativas dejadas en blanco, y no las preguntas no contestadas. A mi se me ocurre arreglarlo así:

Código Javascript:
Ver original
  1. function corregir(){
  2. var numeroPreguntas=3;
  3. var numeroRespuestas=4;
  4. var nombreid = new Array();
  5. var correctas=["p12","p24","p33","p41"];
  6. var cont=0, contAcierto=0, contFallo=0, contBlanco=0, contResultado=0, indice, seleccionada, fallos=0;
  7. var controlador=1;var indice2;
  8. for (pregun=1;pregun<=numeroPreguntas;pregun++)
  9.     {
  10.     for (respuesta=1;respuesta<=numeroRespuestas;respuesta++)
  11.         {
  12.         nombreid[cont]="p"+pregun+respuesta; // me creo las ids de los radios a comprobar
  13.         //var indice=nombreid[cont];
  14.         cont++;
  15.         }
  16.     }
  17.    
  18. //Desde aquí he cambiado yo...
  19.  
  20. var pregSeleccionadas = 0; //Para contar cuantas alternativas estan checked
  21. for (i=0;i<nombreid.length;i++){
  22.     indice=nombreid[i];
  23.     seleccionada=document.getElementById(indice).checked;
  24.    
  25.     if(seleccionada){
  26.         pregSeleccionadas++;
  27.         for(j=0;j<correctas.length;j++){
  28.             if(indice==correctas[j]){
  29.                 contAcierto++;
  30.             }
  31.         }
  32.     }
  33. }
  34. //Naturalmente las blancas seran:
  35. contBlanco = numeroPreguntas - pregSeleccionadas;
  36. //y finalmente sabemos que Total de preguntas = buenas + malas + blancas, por lo que:
  37. contFallo = numeroPreguntas - contBlanco - contAcierto;
  38.  
  39.  
  40. }
  41.  
  42. alert("aciertos"+contAcierto+"fallos"+contFallo+"blancos"+contBlanco);
  43. }

Creo que eso debería bastar para que te funcione bien.
Ojalá te sirva

Saludos!

Última edición por dubafek; 12/01/2012 a las 00:54