Creé un cronómetro usando JavaScript, y estoy tratando de iniciar/detener el temporizador con la tecla de espacio, pero no se detiene, sino que siempre se vuelve más rápido. '''
var timer_start = "S"; var time; document.body.onkeyup = function (e) { if (e.keyCode == 32) { time = setInterval(timer, 10); if (timer_start == "S") { timer_start = "F"; } else if (timer_start == "F") { clearInterval(time); timer_start = "S"; } } };,,,
Una vez que se presiona la barra espaciadora, vuelve a iniciar el temporizador, independientemente del valor actual de timer_start . Debe mover esto para que esté dentro de la instrucción if . También recomendaría usar un valor booleano en lugar de la cadena "S" y "F" .
Aquí está mi reescritura propuesta de su código:
var timer_start = true; var time; document.body.onkeyup = function (e) { if (e.keyCode == 32) { if (timer_start) { time = setInterval(timer, 10); timer_start = false; } else { clearInterval(time); timer_start = true; } } };También podrías acortarlo un poco haciendo esto si quisieras
var timer_start = true; var time; document.body.onkeyup = function (e) { if (e.keyCode == 32) { if (timer_start) { time = setInterval(timer, 10); } else { clearInterval(time); } timer_start = !timer_start } };Establece el intervalo independientemente del estado de timer_start , por lo que sigue acumulando nuevos intervalos y elimina solo la mitad de ellos. Debe establecer el intervalo solo en la rama timer_start == "S" .