¿Cómo hago en Javascript para un cuestionario que aparezcan las soluciones de las preguntas?

Estoy desarrollando un cuestionario en HTML5 y JS basándome en una plantilla, pero en la parte en la que deben aparecer las respuestas correctas del test (no la nota, sino las respuestas en sí), no me aparece nada, incluso copiando el código tal cual. ¿Podrían decirme en qué está mal? Gracias.

El original:
<script type="text/javascript"> <!-- var numPreg = 10; //*** numero de preguntas *** var numElecciones = 3; //*** numero de alternativas de respuesta *** var respCorrectas = new Array(numPreg); //*** entre paréntesis el numero de preguntas *** respCorrectas[0] = "Texto de la respuesta correcta a la pregunta número 1"; respCorrectas[1] = "Texto de la respuesta correcta a la pregunta número 2"; respCorrectas[2] = "Texto de la respuesta correcta a la pregunta número 3"; respCorrectas[3] = "Texto de la respuesta correcta a la pregunta número 4"; respCorrectas[4] = "Texto de la respuesta correcta a la pregunta número 5"; respCorrectas[5] = "Texto de la respuesta correcta a la pregunta número 6"; respCorrectas[6] = "Texto de la respuesta correcta a la pregunta número 7"; respCorrectas[7] = "Texto de la respuesta correcta a la pregunta número 8"; respCorrectas[8] = "Texto de la respuesta correcta a la pregunta número 9"; respCorrectas[9] = "Texto de la respuesta correcta a la pregunta número 10"; //*** a partir de aquí no es necesario modificar el código *** function corregir(form) { var puntuación = 0; var eleccActual; var currSelection; for (i=0; i<numPreg; i++) { eleccActual = i*numElecciones; for (j=0; j<numElecciones; j++) { currSelection = form.elements[eleccActual + j]; if (currSelection.checked) { if (currSelection.value == respCorrectas) { puntuación++; break; } } } } puntuación = Math.round(puntuación/numPreg*100); form.porcentaje.value = puntuación + "%"; if (puntuación > 99) {document.examen.nota.value = "Matrícula de Honor";} else if (puntuación > 89) {document.examen.nota.value = "Sobresaliente";} else if (puntuación > 79) {document.examen.nota.value = "Notable alto";} else if (puntuación > 69) {document.examen.nota.value = "Notable bajo";} else if (puntuación > 59) {document.examen.nota.value = "Bien";} else if (puntuación > 49) {document.examen.nota.value = "Suficiente";} else {document.examen.nota.value = "Insuficiente";} var correctrespCorrectas = ""; for (i=1; i<=numPreg; i++) { correctrespCorrectas += i + ". " + respCorrectas[i-1] + "rn"; } form.soluciones.value = correctrespCorrectas; } // -->

</script>


El mio:
<script type="text/javascript"> var numPreg = 50; var numElecciones = 4; var respCorrectas = new Array(50); respCorrectas[0] = "Casablanca"; respCorrectas[1] = "Tener y no tener"; respCorrectas[2] = "Lars Von Trier"; respCorrectas[3] = "Eyes Wide Shut"; respCorrectas[4] = "Algunos hombres buenos"; respCorrectas[5] = "Joker"; respCorrectas[6] = "Infiltrados"; respCorrectas[7] = "James Cameron"; respCorrectas[8] = "Jim Carrey"; respCorrectas[9] = "The Green Hornet"; respCorrectas[10] = "McLovin"; respCorrectas[11] = "Un parque de atracciones"; respCorrectas[12] = "Mark Zuckerberg"; respCorrectas[13] = "Béisbol"; respCorrectas[14] = "Economía"; respCorrectas[15] = "Malas tierras"; respCorrectas[16] = "Pacífico"; respCorrectas[17] = "Viggo Mortensen"; respCorrectas[18] = "Acordes y desacuerdos"; respCorrectas[19] = "Alvy Singer"; respCorrectas[20] = "Michael Corleone"; respCorrectas[21] = "Demencia 13"; respCorrectas[22] = "Julio Cortázar"; respCorrectas[23] = "Tomás Moro"; respCorrectas[24] = "Sed de mal"; respCorrectas[25] = "Frank Sinatra"; respCorrectas[26] = "Siete días de mayo"; respCorrectas[27] = "Deborah Kerr"; respCorrectas[28] = "De repente, el último verano"; respCorrectas[29] = "John Huston"; respCorrectas[30] = "¿Quieén teme a Virginia Woolf?"; respCorrectas[31] = "Anton Ego"; respCorrectas[32] = "¿Arde París?"; respCorrectas[33] = "Sophia Loren y Eleanora Brown"; respCorrectas[34] = "Giorgio Bassani"; respCorrectas[35] = "La caída de los dioses"; respCorrectas[36] = "Modesty Blaise, superagente femenino"; respCorrectas[37] = "Senderos de gloria"; respCorrectas[38] = "Un joven soñador provinciano"; respCorrectas[39] = "Leonard Cohen"; respCorrectas[40] = "Los amantes de la noche"; respCorrectas[41] = "El desprecio"; respCorrectas[42] = "Los pianos mecánicos"; respCorrectas[43] = "18.000"; respCorrectas[44] = "Shorty Rogers and His Giants"; respCorrectas[45] = "Peter Sellers"; respCorrectas[46] = "Gran Hotel"; respCorrectas[47] = "Desmontando a Harry"; respCorrectas[48] = "Leonard y Arthur"; respCorrectas[49] = "15"; function corregir(form) { var puntuación = 0; var eleccActual; var currSelection; for (i=0; i<numPreg; i++) { eleccActual = i*numElecciones; for (j=0; j<numElecciones; j++) { currSelection = form.elements[eleccActual + j]; if (currSelection.checked) { if (currSelection.value == respCorrectas) { puntuación++; break; } } } } puntuación = Math.round(puntuación/numPreg*100); form.porcentaje.value = puntuación + "%"; if (puntuación > 99) {document.examen.nota.value = "Matrícula de Honor";} else if (puntuación > 89) {document.examen.nota.value = "Sobresaliente";} else if (puntuación > 79) {document.examen.nota.value = "Notable alto";} else if (puntuación > 69) {document.examen.nota.value = "Notable bajo";} else if (puntuación > 59) {document.examen.nota.value = "Bien";} else if (puntuación > 49) {document.examen.nota.value = "Suficiente";} else {document.examen.nota.value = "Insuficiente";} var correctrespCorrectas = ""; for (i=1; i<=numPreg; i++) { respCorrectas+=i+ ". "+ espCorrectas[i-1]+"rn"; } form.soluciones.value=correct.respCorrectas; }
</script>

1 respuesta

Respuesta

En primer lugar, por favor usa la herramienta de pegar código (botón marcado como < >) pues así no hay quien lea nada.

He revisado tu código, y el motivo por el que no te funciona, es que has modificado el ultimo for. Has eliminado que la variable "correctrespCorrectas" concatene la respuesta correcta, además, al pintarlo en el destino, has añadido un punto después de "correct". Esto esta diciéndole al navegador que tome el valor no de correctrespCorrectas sino de una variable "respCorrectas" que pertenece a otra "correct" (y que a su vez pertenecen a document). Como eso no existe, la crea vacía.

Te pego tu código

        var correctrespCorrectas = ""; 
    for (i=1; i<=numPreg; i++) { 
        respCorrectas+=i+ ". "+ espCorrectas[i-1]+"rn"; 
    } 
    form.soluciones.value=correct.respCorrectas;

Y el original

        var correctrespCorrectas = ""; 
    for (i=1; i<=numPreg; i++) { 
    correctrespCorrectas += i + ". " + respCorrectas[i-1] + "rn"; 
    } 
    form.soluciones.value = correctrespCorrectas; 

solucion? O bien indicas que respCorrectas pertenece a correct, inicializando antes ambas variables, o bien dejas el original tal cual, tiene que funcionarte

Fuente: el original ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas