Podrías hacerlo así:
Código Javascript
:
Ver originalvar salida = document.getElementById("tiempo"),
minutos = 30,
segundos = 0,
intervalo = setInterval(function(){
if (--segundos < 0){
segundos = 59;
minutos--;
}
if (!minutos && !segundos)
clearInterval(intervalo);
salida.innerHTML = minutos + ":" + (segundos < 10 ? "0" + segundos : segundos);
}, 1000);
Lo que hace este pequeño script es lo siguiente. Primero, tomo al elemento en el cual se visualizará la cuenta regresiva, además, inicializo a las variables
minutos
y [inline]segundos/inline] con los valores que inicialmente (valga la redundancia) deberán de tener y por último, una cuarta variable de nombre
intervalo
, a la cual le asignaré el intervalo creado con el método
setInterval
. En la función que se ejecutará cada segundo en el intervalo, resto 1 a
segundos
y si su valor es menor a 0, le asigno el 59 como nuevo valor, además, resto 1 a
minutos
, de este modo, para la siguiente ejecución,
segundos
será igual a 59 - 1, por lo que al no ser menor que 0, quedará con ese valor y no se restará otro minuto. Por otro lado, cuando los valores de
minutos
y
segundos
sean iguales a 0 (recordando que el 0 equivale al valor booleano
false
), se terminará el intervalo de tiempo. Finalmente, muestro en el elemento de salida a los valores actualizados de las variables
minutos
y
segundos
, dándole a esta última el formato respectivo en caso sea menor que 10.
Saludos