Tengo que cambiar el siguiente código para que la función createTimer obtenga dos parámetros (horas y minutos) y el formato de salida debe ser "horas minutos segundos" y estoy luchando para resolver esto.
function createTimer(options) { var timer, instance = this, seconds = options.seconds, updateStatus = options.onUpdateStatus || function () {}, counterEnd = options.onCounterEnd || function () {}; function decrementCounter() { updateStatus(seconds); if (seconds === 0) { counterEnd(); instance.stop(); } seconds--; } this.start = function () { clearInterval(timer); timer = 0; seconds = options.seconds; timer = setInterval(decrementCounter, 1000); }; this.stop = function () { clearInterval(timer); }; } function startTimer() { var timer = new createTimer({ seconds: 10, onUpdateStatus: function (seconds) { document.getElementById("timer").innerHTML = seconds + " seconds"; }, onCounterEnd: function () { document.getElementById("timer").innerHTML = "Time's up"; }, }); timer.start(); }Debe seguir disminuyendo los segundos y usar varias condiciones para restar uno de los minutos y las horas.
function createTimer(hours, minutes) { var timer, instance = this, seconds = 0, hours = hours, minutes = minutes, updateStatus = onUpdateStatus || function() {}, counterEnd = onCounterEnd || function() {}; function onUpdateStatus(h, m, seconds) { document.getElementById("timer").innerHTML = h + " hours " + m + " minutes " + seconds + " seconds"; } function onCounterEnd() { document.getElementById("timer").innerHTML = "Time's up"; } function decrementCounter() { updateStatus(hours, minutes, seconds); if (hours === 0 && minutes === 0 && seconds === 0) { counterEnd(); instance.stop(); } seconds--; if (seconds < 0) { seconds = 59; minutes--; if (minutes < 0) { hours--; minutes = 59; } } } this.start = function() { clearInterval(timer); timer = 0; seconds = seconds; timer = setInterval(decrementCounter, 1000); }; this.stop = function() { clearInterval(timer); }; } function startTimer() { var timer = new createTimer(0,1); timer.start(); } startTimer() <div id="timer"></div>