Buenas.
Un amigo ha elaborado un test de filosofía y yo lo he pasado a html usando javascript. Lo podéis ver en
Test de Filosofía
Si os fijáis en las 'condiciones iniciales', cada pregunta que te dejes en blanco cuenta como un fallo. He ahí el problema, como no sé mucho javascript, no puedo cambiar eso ... es decir, a mi me gustaría que si una pregunta se deja en blanco, su puntuación fuera 0, en vez de contar como una mala.
Y todo porque 4 preguntas mal respondidas restan 1 buena (para evitar que el azar cuente algo en el examen).
Después de todo el rollo, pongo el código del test en javascript, para ver si alguien me puede echar un cable:
<!-- OPTIMIZANDO EL TEST PARA 20 PREGUNTAS -->
<SCRIPT LANGUAGE="JavaScript">
var ans = new Array;
var done = new Array;
var yourAns = new Array;
var explainAnswer = new Array;
<!-- Soluciones correctas -->
ans[1] = "b";
ans[2] = "c";
ans[3] = "a";
ans[4] = "a";
ans[5] = "d";
ans[6] = "d";
ans[7] = "c";
ans[8] = "d";
ans[9] = "a";
ans[10] = "c";
ans[11] = "a";
ans[12] = "c";
ans[13] = "d";
ans[14] = "b";
ans[15] = "b";
ans[16] = "a";
ans[17] = "d";
ans[18] = "b";
ans[19] = "d";
ans[20] = "b";
function Engine(question, answer) {
yourAns[question]=answer;
}
function Score(){
var answerText = "Resultados.\n------------------------------------\n";
var score = 0;
var fallos = 0;
for(i=1;i<=ans.length-1;i++){
if(ans!=yourAns){
fallos++;
}
else{
score++;
}
}
answerText=answerText+"\n Número de aciertos: "+score+"("+100*score/(ans.length-1)+"%)";
answerText=answerText+"\n Número de fallos: "+fallos+"("+100*fallos/(ans.length-1)+"%)";
<!-- Comentario final -->
var puntuacion = 0;
if(1/4*fallos>=score){
puntuacion = 0;
}
else{
<!-- Fórmula para 40 preguntas puntuacion = (score - fallos/4) / 4;-->
puntuacion = (score - fallos/4) / 2;
}
answerText=answerText+"\n Nota: "+puntuacion+"\n";
if(puntuacion<5){
answerText=answerText+" Suspenso";
}
if(puntuacion>=5 && puntuacion<7){
answerText=answerText+" Aprobado";
}
if(puntuacion>=7 && puntuacion<8.5){
answerText=answerText+" Notable";
}
if(puntuacion>=8.5 && puntuacion<10){
answerText=answerText+" Sobresaliente";
}
if(puntuacion==10){
answerText=answerText+" Matrícula de Honor";
}
answerText=answerText+"\n\n Para saber las opciones correctas visita el foro de la web.";
alert(answerText);
}
</script>
Por otra parte, luego en el body pongo las preguntas así:
<FORM>
<div align="justify">
<b>1. ¿Quién dijo que "el hombre es la medida de todas las cosas"?</b><br>
<input type=radio name="q1" value="a" onClick="Engine(1, this.value)">a) Platón.<br>
<input type=radio name="q1" value="b" onClick="Engine(1, this.value)">b) Protágoras.<br>
<input type=radio name="q1" value="c" onClick="Engine(1, this.value)">c) Aristóteles.<br>
<input type=radio name="q1" value="d" onClick="Engine(1, this.value)">d) Empédocles.<p>
<b>2. ¿Quién es el autor de "Verdad y método", la obra clave de la hermenéutica contemporánea?</b><br>
<input type=radio name="q2" value="a" onClick="Engine(2, this.value)">a) Martin Heidegger.<br>
<input type=radio name="q2" value="b" onClick="Engine(2, this.value)">b) b) W. V. Quine.<br>
<input type=radio name="q2" value="c" onClick="Engine(2, this.value)">c) Hans-Georg Gadamer.<br>
<input type=radio name="q2" value="d" onClick="Engine(2, this.value)">d) d) Michel Foucault.<p>
... y así sucesivamente.
Repito la idea ... mi intención es que si un usuario no contesta una pregunta, no cuente como incorrecta y le reste puntuación.