He escrito un código anidando fors y ifs, no sé si es la solución más adecuada.
function corregir(){
var numeroPreguntas=4;
var nombreid = new Array();
var correctas=["p12","p24","p33","p41"];
var cont=0, contAcierto=0, contFallo=0, contBlanco=0, contResultado=0;
for (pregun=1;pregun<=numeroPreguntas;pregun++)
{
for (respuesta=1;respuesta<=4;respuesta++)
{
nombreid[cont]="p"+pregun+respuesta; // me creo las ids de los radios a comprobar
var indice=nombreid[cont];
var seleccionada=document.getElementById(indice).check ed;
if(seleccionada){
for(i=0;i<correctas.length;i++)
{
if(indice==correctas[i])
{
alert("correcta"+" indice"+indice+" correctas"+correctas[i]);
contAcierto++;
contResultado=contResultado+2;
}
else{
contFallo++;
contResultado=contResultado-1;
}
}
}
else
{
contBlanco++;
contResultado-0,5;
}
cont++;
}
alert("aciertos "+contAcierto+"resultado "+contResultado+"en blanco "+contBlanco);
}
}
y el HTML es:
<FORM name="Preguntas">
<p>
<!-- Primera pregunta -->
1.- Este es el enunciado de la primera pregunta del test. </p>
<p>
<input type="radio" name="pregunta1" id="p11" value="A" /> Texto de la respuesta A. </p> <p>
<input type="radio" name="pregunta1" id="p12" value="B" /> Texto de la respuesta B. </p> <p>
<input type="radio" name="pregunta1" id="p13" value="C" /> Texto de la respuesta C. </p> <p>
<input type="radio" name="pregunta1" id="p14" value="D" /> Texto de la respuesta D. </p>
<p></p>
<!-- Segunda pregunta -->
2.- Este es el enunciado de la segunda pregunta del test. </p>
<p>
<input type="radio" name="pregunta2" id="p21" value="A" /> Texto de la respuesta A. </p> <p>
<input type="radio" name="pregunta2" id="p22" value="B" /> Texto de la respuesta B. </p> <p>
<input type="radio" name="pregunta2" id="p23" value="C" /> Texto de la respuesta C. </p> <p>
<input type="radio" name="pregunta2" id="p24" value="D" /> Texto de la respuesta D. </p>
<p></p>
<!-- Tercera pregunta -->
3.- Este es el enunciado de la tercera pregunta del test. </p>
<p>
<input type="radio" name="pregunta3" id="p31" value="A" /> Texto de la respuesta A. </p> <p>
<input type="radio" name="pregunta3" id="p32" value="B" /> Texto de la respuesta B. </p> <p>
<input type="radio" name="pregunta3" id="p33" value="C" /> Texto de la respuesta C. </p> <p>
<input type="radio" name="pregunta3" id="p34" value="D" /> Texto de la respuesta D. </p>
<p></p>
</FORM>
<FORM name="boton">
<input type="button" name="boton" value=" CORREGIR " onClick="corregir()"/>
</FORM>
<br><br>
El problema que al hacer las comprobaciones dentro del for, me suma más respuesta falladas y en blanco de las que hay en realidad.
¿Alguien sabe cómo solucionarlo?¿Alguna idea de cómo hacer el código más eficiente?
Muchas gracias, sé que es poco rollo de leer todo lo que he puesto
