soy nueva por aquí, estoy desarrollando un quizz para la escuela en el cual se mide el iq, hasta ahora he podido hacer un array con la pregunta, 6 opciones y una respuesta correcta, pero se me ha pedido agregar un reloj que limite el acceso del test a 40 minutos y que este envíe el resultado al alcanzar el tiempo limite a la base de datos (my sql, motor innodb). Soy muy novata en el uso de Javascript así que no puedo hacerme una idea de como integrar esto a mi proyecto y no encuentro tutoriales en español. También acepto comentarios acerca de como mejorar mi código.
No se si sea necesario pero esto es lo que tengo hasta ahora
En caso de requerir más información pueden mencionarlo y lo añadiré.
function populate(){ if(quiz.isEnded()) { showScores(); } else {
// mostrar pregutas var element = document.getElementById("question"); element.innerHTML = quiz.getQuestionIndex().text;
// Incisos var choices = quiz.getQuestionIndex().choices; for(var i = 0; i < choices.length; i++) { var element = document.getElementById("choice" + i); element.innerHTML = choices[i]; guess("bt" + i, choices[i]); }
showProgress(); } };
function guess(id, guess) { var button = document.getElementById(id); button.onclick = function(){ quiz.guess(guess); populate(); } };
function showProgress(){ var currentQuestionNumber = quiz.questionIndex + 1; var element = document.getElementById("progress"); element.innerHTML = "Pregunta número " + currentQuestionNumber + " de " + quiz.questions.length; };
function showScores(){ var gameOverHTML = "<h1>Haz terminado, puedes proceder a abandonar la applicación <br> Utiliza la barra de navegación</h1>"; gameOverHTML += "<h2 id='score'> Tu Resultado: " + quiz.score + "</h2>"; var element = document.getElementById("quiz"); element.innerHTML = gameOverHTML; };
// Creacion de las Preguntas, son 60 pero solo incluiré una como ejemplo para no hacerlo más largo var questions = [ new Question("Lamina 1/60 <br> <img src='rvn/q/1.png'/> <br>", ["a <br> <img src='rvn/a/1a.png'/>", "b <br> <img src='rvn/a/1b.png'/>","c <br> <img src='rvn/a/1c.png'/>", "d <br> <img src='rvn/a/1d.png'/>", "f <br> <img src='rvn/a/2a.png'/>", "g <br> <img src='rvn/a/3a.png'/>"], "c <br> <img src='rvn/a/1c.png'/>"), ];
var quiz = new Quiz(questions);
populate()
Configuración: Android / Chrome 87.0.4280.101
Consulta también:
Añadir un contador regresivo a mi test Php/Javascript
Algo que debes tener en cuenta es que no puedes fiarte exclusivamente del control de tiempos del cliente (Alguien con algunos conocimientos podría abusar del sistema), con lo cual, es recomendable implementar algún tipo de control del lado del servidor también.
Una forma sería guardar en la sesión el tiempo de inicio del test y, al recibir las respuestas, verificar que el tiempo transcurrido no supere los 40 minutos.
No es una solución infalible (puede dar problemas en casos extremos), pero es mejor que dejar todo en manos del cliente :)