Hola! Necesito ayuda! Tengo que corregir un examen tipo test, en el que se cuentan las preguntas que estan bien, las que estan mal y las que estan en blanco. La cosa es que debe ser codigo generico para que sirva con cualquier tipo test, solo cambiando el valor de algunas variables.
He hecho este codigo:
Código Javascript
:
Ver original<html>
<head>
<title>Corrección de un test</title>
<script type="text/javascript">
function 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++;
}
}
for (i=0;i<nombreid.length;i++){
indice=nombreid[i];
seleccionada=document.getElementById(indice).checked;
if(seleccionada){
for(j=0;j<correctas.length;j++){
if(seleccionada && indice==correctas[j]){
contAcierto++;
}
else if(seleccionada && indice!=correctas[j]{
contFallo++;
}
}
}
else{
contBlanco++;
}
}
}
alert("aciertos"+contAcierto+"fallos"+contFallo+"blancos"+contBlanco);
}
</script>
</head>
El problema es que como hago la comprobacion de las preguntas dentro del for, me cuenta veces de mas los fallos y los blancos.
Este es el codigo HTML:
Código HTML:
Ver original
<!-- Primera pregunta -->
1.- Este es el enunciado de la primera pregunta del test.
</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>
<!-- Segunda pregunta -->
2.- Este es el enunciado de la segunda pregunta del test.
</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>
<!-- Tercera pregunta -->
3.- Este es el enunciado de la tercera pregunta del test.
</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>
<input type="button" name="boton" value=" CORREGIR " onClick="corregir()"/>
<b>RESULTADO DEL TEST
</b> <P> <form name="resultado" action="">
Has acertado
<input type="text" size="3" name="aciertos" id="aciertos" value=""/> preguntas
<br>Has fallado en
<input type="text" size="3" name="fallos" value=""/> preguntas
<br>Has dejado de responder
<input size="3" name="blancos" type="text" value=""/> preguntas
<P>PUNTUACIÓN:
<input type="text" size="5" name="puntuacion" value=""/> puntos
¿Alguna idea sobre como hacer la correccion impidiendo este problema?
Muchas gracias