Mostrar porcentaje de cuestionario en javascript
Publicado por Luciano (1 intervención) el 16/11/2020 21:45:05
¡Hola! Soy estudiante de javascript hace muy poco tiempo y estoy aprendiendo a usar Javascript. En mi trabajo me pidieron que entregue un cuestionario que debe mostrar el porcentaje de respuestas correctas, y ayudandome un poco entre los cursos que aquí encontré y otro poco con youtube pude lograr resolver el problema hasta aquí:
ESTE ES MI HTML
ESTE ES MI SCRIPT
Sé como hacer para que al usuario le muestre las respuestas correctas, pero lo que yo quiero hacer es mostrarle el PORCENTAJE de respuestas acertadas y no el NUMERO. Además segun el porcentaje debe imprimir en pantalla un mensaje diferente: si es menos de 40% es un mensaje, si es de 40% a 60% es otro mensaje y si es de 60% a 100% es otro.
GRACIAS! AYUDAAA
ESTE ES MI HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<metaname="viewport"content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<divid="test"></div>
<buttonid="boton">Mostrar resultado</button>
<divid="resultado"></div>
<scriptsrc="script.js"></script>
</body>
</html>
ESTE ES MI SCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
const contenedor = document.getElementById("test");
const botonRes = document.getElementById("boton");
const resultadoTest = document.getElementById ("resultad");
const preguntas = [
{
pregunta : "1.Te quedas sin luz en el marco de un apagón general en la cuadra:",
respuestas: {
a: "Llamás varias veces a la empresa y registrar cada número de reclamo para ir a Defensa del consumidor",
b: "Te encerrás en tu casa bajo llave y llamas a la policía local para que patrulle la zona, sobre todo la esquina donde se suele juntar gente",
c: "Salís de tu casa, caminas ida y vuelta la calle charlando con los vecinos para contenerlos o bien para juntar firmas del petitorio 'EDENOR, BASURA, VOS SOS LA DICTADURA' con quema de neumáticos y olla popular. Una u otra opción se dependen de las circunstancias"
},
respuestacorrecta: "c"
},
{
pregunta : "2.Tenés que cortarte el pelo:",
respuestas: {
a: "Vas al que cobra caro porque no entendes nada de cortes pero debe ser bueno",
b: "Miras atento los carteles y entras al que dice “coiffeur” por seguridad",
c: "Vas a la academia de peluquería y te vale verga que se llame la “Tijera sangrante”. Hay que motivar y dar oportunidades"
},
respuestacorrecta: "c"
},
{
pregunta : "3.Hacés un viaje con amigos/as y uno/a se fractura una pierna a mitad de la estadía. Tu propuesta es:",
respuestas: {
a: "Acompañar al amigo/a en la operación, llamar a un familiar a que venga a cuidarlo/a y seguir el viaje",
b: "Cancelar el viaje y que todos/as vuelvan",
c: "Llamar a la familia del accidentado y que se hagan cargo rápido para no perder días de viaje"
},
respuestacorrecta: "a"
},
{
pregunta : "4.Almuerzo de reencuentro con ex compañeros de la primaria:",
respuestas: {
a: "Guardo silencio, identifico al gorila y le discuto todo. Cuando se levanta para ir al baño comparto con la mesa anécdotas denigrantes",
b: "Entro con los tapones de punta si hay gorilas nos cagaremos la comida todos juntos.",
c: "Salís de tu casa, caminas ida y vuelta la calle charlando con los vecinos para contPido que de política y religión mejor no hablemos y propongo un brindis 'VIVA LA SANTA FEDERACIÓN, MUERAN LOS SALVAJES UNITARIOS!'",
d: "Todas la anteriores incluyendo la opción de irse a las manos"
},
respuestacorrecta: "d"
},
{
pregunta : "5.Hacés un asado. Sobre la parrilla pones:",
respuestas: {
a: "Mollejas, entraña y vacío",
b: "Chorizo y asado de costilla",
c: "Mix de verduras y pollo sin piel"
},
respuestacorrecta: "b"
},
];
function mostrartest () {
const preguntasYrespuestas = [];
preguntas.forEach((preguntaActual, numeroDePregunta) => {
const respuestas = [];
for(letraRespuesta in preguntaActual.respuestas){
respuestas.push(
`<label>
<input type ="radio" name="${numeroDePregunta}" value="${letraRespuesta}">
${letraRespuesta} : ${preguntaActual.respuestas [letraRespuesta]}
</label>`
);
}
preguntasYrespuestas.push(
`<div class="cuestion"> ${preguntaActual.pregunta} </div>
<div class="respuestas"> ${respuestas.join('')}</div>
`
);
});
contenedor.innerHTML = preguntasYrespuestas.join('');
}
mostrartest();
function mostrarResultado() {
const respuestas = contenedor.querySelectorAll(".respuestas");
let respuestasCorrectas = 0;
preguntas.forEach((preguntaActual, numeroDePregunta) => {
const todasLasRespuestas = respuestas[numeroDePregunta];
const checkboxRespuestas = `input [name='${numeroDePregunta}']:checkend`;
const respuestaElegida = (todasLasRespuestas.querySelector(checkboxRespuestas) || {}).value;
if(respuestaElegida === preguntaActual.respuestaCorrecta){
respuestasCorrectas++;
}
} );
}
Sé como hacer para que al usuario le muestre las respuestas correctas, pero lo que yo quiero hacer es mostrarle el PORCENTAJE de respuestas acertadas y no el NUMERO. Además segun el porcentaje debe imprimir en pantalla un mensaje diferente: si es menos de 40% es un mensaje, si es de 40% a 60% es otro mensaje y si es de 60% a 100% es otro.
GRACIAS! AYUDAAA
Valora esta pregunta
0