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 originalfunction corregir(){
var numeroPreguntas=3;
var numeroRespuestas=4;
var nombreid = new Array();
var correctas=["p12","p24","p33","p41"];
var cont=0, contAcierto=0, contFallo=0, contBlanco=0, contResultado=0, indice, seleccionada, fallos=0;
var controlador=1;var indice2;
for (pregun=1;pregun<=numeroPreguntas;pregun++)
{
for (respuesta=1;respuesta<=numeroRespuestas;respuesta++)
{
nombreid[cont]="p"+pregun+respuesta; // me creo las ids de los radios a comprobar
//var indice=nombreid[cont];
cont++;
}
}
//Desde aquí he cambiado yo...
var pregSeleccionadas = 0; //Para contar cuantas alternativas estan checked
for (i=0;i<nombreid.length;i++){
indice=nombreid[i];
seleccionada=document.getElementById(indice).checked;
if(seleccionada){
pregSeleccionadas++;
for(j=0;j<correctas.length;j++){
if(indice==correctas[j]){
contAcierto++;
}
}
}
}
//Naturalmente las blancas seran:
contBlanco = numeroPreguntas - pregSeleccionadas;
//y finalmente sabemos que Total de preguntas = buenas + malas + blancas, por lo que:
contFallo = numeroPreguntas - contBlanco - contAcierto;
}
alert("aciertos"+contAcierto+"fallos"+contFallo+"blancos"+contBlanco);
}
Creo que eso debería bastar para que te funcione bien.
Ojalá te sirva
Saludos!