Quando zerar cronômetro conta 1 ou 2 dias novamente regressivo! JavaScript

17/10/2019

0

Tenho um contador regressivo, e preciso que quando ele zerar ele conta 1 ou 2 dias pra frente e voltar a contagem regressiva, como posso fazer isso.


<span class="numero" id="dia"></span><b style="color: #ff4a00">:</b><span class="numero" id="hora"></span><b style="color: #ff4a00">:</b><span class="numero" id="minuto"></span><b style="color: #ff4a00">:</b><span class="numero" id="segundo"></span>


var data = 17;
var target_date = new Date(`\n October $, 2019`).getTime();
var dias, horas, minutos, segundos;
var regressiva = document.getElementById("regressiva");

setInterval(function() {
Timer();
}, 1000);

function Timer() {
var current_date = new Date().getTime();
var segundos_f = (target_date - current_date) / 1000;

dias = parseInt(segundos_f / 86400);
segundos_f = segundos_f % 86400;

horas = parseInt(segundos_f / 3600);
segundos_f = segundos_f % 3600;

minutos = parseInt(segundos_f / 60);
segundos = parseInt(segundos_f % 60);

document.getElementById(''''dia'''').innerHTML = dias;
document.getElementById(''''hora'''').innerHTML = horas < 10 ? `$` : `$`;
document.getElementById(''''minuto'''').innerHTML = minutos < 10 ? `$` : `$`;
document.getElementById(''''segundo'''').innerHTML = segundos < 10 ? `$` : `$`;

if(horas == 0 && minutos == 0 && segundos == 0) {
data = data + 2;
}
}
Paulo Junior

Paulo Junior

Responder

Posts

17/10/2019

Sadasd

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}
Responder

17/10/2019

Paulo Junior

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito
Responder

17/10/2019

Sadasd

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.
Responder

17/10/2019

Sadasd

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.


Nota no caso a função vai se chamar denovo ali dentro do seu if que verifica se as horas minutos e segundos são iguais a zero.
Responder

21/10/2019

Paulo Junior

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.


Nota no caso a função vai se chamar denovo ali dentro do seu if que verifica se as horas minutos e segundos são iguais a zero.



não deu certo man :/
Responder

21/10/2019

Sadasd

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.


Nota no caso a função vai se chamar denovo ali dentro do seu if que verifica se as horas minutos e segundos são iguais a zero.



não deu certo man :/


Estranho, com recursão deveria funcionar, verifique se a lógica do seu código bate com isso aqui:
função que: pega a data atual -> cria um cronômetro em contagem regressiva até dois dias depois -> quando o cronômetro chega em zero chama a função de novo.
Responder

21/10/2019

Paulo Junior

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.


Nota no caso a função vai se chamar denovo ali dentro do seu if que verifica se as horas minutos e segundos são iguais a zero.



não deu certo man :/


Estranho, com recursão deveria funcionar, verifique se a lógica do seu código bate com isso aqui:
função que: pega a data atual -> cria um cronômetro em contagem regressiva até dois dias depois -> quando o cronômetro chega em zero chama a função de novo.



Eu fiz a alteração do código para este, mesmo assim não funcionou!!


// Set the date we're counting down to
var countDownDate = new Date("Octo 21 , 2019 10:15:25").getTime();

// Update the count down every 1 second
var x = setInterval(function() {

// Get todays date and time
var now = new Date().getTime();

// Find the distance between now an the count down date
var distance = countDownDate - now;

// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);

// Output the result in an element with id="demo"
document.getElementById("demo").innerHTML = days + " : " + hours + " : "
+ minutes + " : " + seconds + "";



// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").countDownDate = countDownDate + 2;
}
Responder

21/10/2019

Sadasd

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.


Nota no caso a função vai se chamar denovo ali dentro do seu if que verifica se as horas minutos e segundos são iguais a zero.



não deu certo man :/


Estranho, com recursão deveria funcionar, verifique se a lógica do seu código bate com isso aqui:
função que: pega a data atual -> cria um cronômetro em contagem regressiva até dois dias depois -> quando o cronômetro chega em zero chama a função de novo.



Eu fiz a alteração do código para este, mesmo assim não funcionou!!


// Set the date we're counting down to
var countDownDate = new Date("Octo 21 , 2019 10:15:25").getTime();

// Update the count down every 1 second
var x = setInterval(function() {

// Get todays date and time
var now = new Date().getTime();

// Find the distance between now an the count down date
var distance = countDownDate - now;

// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);

// Output the result in an element with id="demo"
document.getElementById("demo").innerHTML = days + " : " + hours + " : "
+ minutes + " : " + seconds + "";



// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").countDownDate = countDownDate + 2;
}


Coloque seu código dentro das tags de código pra ficar mais fácil de ler, mas cara, você deve ter cometido algum erro de lógica ai, eu fiz o mesmo algoritmo em python e funcionou perfeitamente, só que o meu foi com um minuto ao invés de dois dias pra eu poder testar mais rápido, eis o código:

import datetime
import time


def cronometro():
    now = datetime.datetime.now()
    minutos = now.minute
    regressivo = 60
    fimdacontagem = minutos + 1
    while minutos<fimdacontagem:
        print(regressivo)
        time.sleep(1)
        regressivo -= 1
        if regressivo == 0:
            cronometro()

cronometro()
Responder

21/10/2019

Paulo Junior

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.


Nota no caso a função vai se chamar denovo ali dentro do seu if que verifica se as horas minutos e segundos são iguais a zero.



não deu certo man :/


Estranho, com recursão deveria funcionar, verifique se a lógica do seu código bate com isso aqui:
função que: pega a data atual -> cria um cronômetro em contagem regressiva até dois dias depois -> quando o cronômetro chega em zero chama a função de novo.



Eu fiz a alteração do código para este, mesmo assim não funcionou!!


// Set the date we're counting down to
var countDownDate = new Date("Octo 21 , 2019 10:15:25").getTime();

// Update the count down every 1 second
var x = setInterval(function() {

// Get todays date and time
var now = new Date().getTime();

// Find the distance between now an the count down date
var distance = countDownDate - now;

// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);

// Output the result in an element with id="demo"
document.getElementById("demo").innerHTML = days + " : " + hours + " : "
+ minutes + " : " + seconds + "";



// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").countDownDate = countDownDate + 2;
}


Coloque seu código dentro das tags de código pra ficar mais fácil de ler, mas cara, você deve ter cometido algum erro de lógica ai, eu fiz o mesmo algoritmo em python e funcionou perfeitamente, só que o meu foi com um minuto ao invés de dois dias pra eu poder testar mais rápido, eis o código:

import datetime
import time


def cronometro():
    now = datetime.datetime.now()
    minutos = now.minute
    regressivo = 60
    fimdacontagem = minutos + 1
    while minutos<fimdacontagem:
        print(regressivo)
        time.sleep(1)
        regressivo -= 1
        if regressivo == 0:
            cronometro()

cronometro()




O meu código esta funcionando normal, so que quando zera ele não faz a função que seria tipo: zerou 00:00:00 dai conta 2 dias ( ou 1 dia) 48:00:00 e faz a contagem regressiva
Responder

21/10/2019

Sadasd

Porque você não prende seu código num loop infinito? Tipo:
while(true){
    //executa seu código
}


Deu certo não a pagina ficou carregando infinito


Então vamos tentar uma solução um pouco mais avançada, tenta com recursão, transforma esse seu código numa função e faz sua função chamar a si mesma no final do código.


Nota no caso a função vai se chamar denovo ali dentro do seu if que verifica se as horas minutos e segundos são iguais a zero.



não deu certo man :/


Estranho, com recursão deveria funcionar, verifique se a lógica do seu código bate com isso aqui:
função que: pega a data atual -> cria um cronômetro em contagem regressiva até dois dias depois -> quando o cronômetro chega em zero chama a função de novo.



Eu fiz a alteração do código para este, mesmo assim não funcionou!!


// Set the date we're counting down to
var countDownDate = new Date("Octo 21 , 2019 10:15:25").getTime();

// Update the count down every 1 second
var x = setInterval(function() {

// Get todays date and time
var now = new Date().getTime();

// Find the distance between now an the count down date
var distance = countDownDate - now;

// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);

// Output the result in an element with id="demo"
document.getElementById("demo").innerHTML = days + " : " + hours + " : "
+ minutes + " : " + seconds + "";



// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").countDownDate = countDownDate + 2;
}


Coloque seu código dentro das tags de código pra ficar mais fácil de ler, mas cara, você deve ter cometido algum erro de lógica ai, eu fiz o mesmo algoritmo em python e funcionou perfeitamente, só que o meu foi com um minuto ao invés de dois dias pra eu poder testar mais rápido, eis o código:

import datetime
import time


def cronometro():
    now = datetime.datetime.now()
    minutos = now.minute
    regressivo = 60
    fimdacontagem = minutos + 1
    while minutos<fimdacontagem:
        print(regressivo)
        time.sleep(1)
        regressivo -= 1
        if regressivo == 0:
            cronometro()

cronometro()




O meu código esta funcionando normal, so que quando zera ele não faz a função que seria tipo: zerou 00:00:00 dai conta 2 dias ( ou 1 dia) 48:00:00 e faz a contagem regressiva


Aqui o código em javascript, só que novamente esse é com um minuto ao invés de dois dias, e ao invés de alterar algum arquivo html ele dá um console log:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

function cronometro(){
  var horario = new Date();
  var minutos = horario.getMinutes();
  var segundos = 60 - horario.getSeconds();
  var fimDaContagem = minutos + 1;
  while(minutos < fimDaContagem){
    console.log(segundos);
    segundos--;
    sleep(1000);
    if(segundos == 0){
      cronometro();
    }
  }
}

cronometro();
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar