He programado un cronómetro simple en JavaScript. Sin embargo, no puedo implementar una función que devuelva los tiempos de vuelta.
Mi objetivo es programar un cronómetro que funcione como el cronómetro de un iPhone. Necesito medir el tiempo acumulado y los tiempos de una sola vuelta (no solo los tiempos parciales).
Tal vez, ¿alguien ha programado ya un cronómetro así?
Muchas gracias,
//TIMER function timeToString(time) { document.getElementById("time").value = time; return time; } let startTime; let start_date; let elapsedTime = 0; let timerInterval; //FUNCTION TO CHANGE INNER HTML function print(txt) { document.getElementById("display").innerHTML = txt; } //CREATE START PAUSE FUNCTION function start() { startTime = performance.now() - elapsedTime; start_date = performance.now() timerInterval = setInterval(function printTime() { elapsedTime = performance.now() - startTime; print(timeToString(elapsedTime)); }, 10); showButton("PAUSE"); } function pause() { clearInterval(timerInterval); showButton("PLAY"); } //FUNCTION TO DISPLAY BUTTONS function showButton(buttonKey) { const buttonToShow = buttonKey === "PLAY" ? openButton : closeButton; const buttonToHide = buttonKey === "PLAY" ? closeButton : openButton; buttonToShow.style.display = "block"; buttonToHide.style.display = "none"; } //EVENT LISTENER let openButton = document.getElementById("openButton"); let closeButton = document.getElementById("closeButton"); openButton.addEventListener("click", start); closeButton.addEventListener("click", pause); <button type="button" id="search_button" data-id="search_decision"> <span id="openButton">Start</span> <span id="closeButton">Stop</span> </button> <p id="display">0</p> <input type="hidden" name="time" id="time" value="0" />No sé si quieres observador o no, por favor agrega más detalles.
class Stopwatch{ constructor(){ this.time = 0 this.laps = [] this.observers = [] } stop(){ clearInterval(this.timerInterval) } start(){ this.timerInterval = setInterval(() => this.time++,1000) } lap(){ this.laps.push(this.time) } getTimeForLab(index){ return this.laps[index] - (this.laps[index - 1] || 0) } } const stopwatch = new Stopwatch() stopwatch.start() stopwatch.stop()