Eu quero usar um cronômetro de contagem regressiva simples, iniciando em 30 segundos a partir de quando a função é executada e terminando em 0. Sem milissegundos. Como pode ser codificado?
147
Eu quero usar um cronômetro de contagem regressiva simples, iniciando em 30 segundos a partir de quando a função é executada e terminando em 0. Sem milissegundos. Como pode ser codificado?
var count=30;
var counter=setInterval(timer, 1000); //1000 will run it every 1 second
function timer()
{
count=count-1;
if (count <= 0)
{
clearInterval(counter);
//counter ended, do something here
return;
}
//Do code for showing the number of seconds here
}
Para fazer o código do timer aparecer em um parágrafo (ou em qualquer outro lugar da página), basta colocar a linha:
<span id="timer"></span>
onde você deseja que os segundos apareçam. Em seguida, insira a seguinte linha em sua timer()
função, para que fique assim:
function timer()
{
count=count-1;
if (count <= 0)
{
clearInterval(counter);
return;
}
document.getElementById("timer").innerHTML=count + " secs"; // watch for spelling
}
Eu escrevi este script há algum tempo:
Uso:
fonte
myCounter.stop();
Até agora, as respostas parecem depender do código sendo executado instantaneamente. Se você definir um cronômetro para 1000ms, ele será em torno de 1008.
Aqui está como você deve fazê-lo:
Para usar, ligue para:
fonte
Aqui está outro caso alguém precise de um por minutos e segundos:
fonte
setTimeout(Decrement, 1000)
é preferível. stackoverflow.com/questions/6232574/…fonte
Math.floor
, nãoMath.round
Acabou de modificar a resposta de @ ClickUpvote :
Você pode usar IIFE (expressão de função chamada imediatamente) e recursão para facilitar um pouco:
Mostrar snippet de código
fonte
Expandir a resposta aceita, sua máquina entrando no modo de espera etc. pode atrasar o temporizador de funcionar. Você pode obter um tempo real, à custa de um pouco de processamento. Isso dará um tempo real restante.
fonte
Você pode fazer o seguinte com JS puro. Você só precisa fornecer à função o número de segundos e ela fará o resto.
fonte
Com base na solução apresentada por @Layton Everson, desenvolvi um contador que inclui horas, minutos e segundos:
fonte
fonte
Minha solução funciona com os formatos de data e hora do MySQL e fornece uma função de retorno de chamada. em conclusão. Isenção de responsabilidade: funciona apenas com minutos e segundos, pois era disso que eu precisava.
fonte
Por uma questão de desempenho, agora podemos usar com segurança requestAnimationFrame para loop rápido, em vez de setInterval / setTimeout.
Ao usar setInterval / setTimeout, se uma tarefa de loop estiver demorando mais que o intervalo, o navegador simplesmente estenderá o loop de intervalo, para continuar a renderização completa. Isso está criando problemas. Após minutos de sobrecarga setInterval / setTimeout, isso pode congelar a guia, o navegador ou o computador inteiro.
Os dispositivos de Internet têm uma ampla variedade de performances, por isso é impossível codificar um intervalo de tempo fixo em milissegundos!
Usando o objeto Data , para comparar a Data de início da época e a atual. Isso é muito mais rápido que tudo, o navegador cuida de tudo, a 60FPS ( 1000/60 = 16,66ms por quadro ) - um quarto de piscar de olhos - e se a tarefa no loop exigir mais do que isso , o navegador eliminará algumas repetições.
Isso permite uma margem diante dos nossos olhos ( Humano = 24FPS => 1000/24 = 41.66ms por quadro = animação fluida!)
https://caniuse.com/#search=requestAnimationFrame
fonte