Jump to content
Thiago2018

SetTimeout - funciona mas não repete todas as statements da função - Erro estranho!

Recommended Posts

var objectData = new Date();

window.addEventListener('click', relogio, false);

var hora = objectData.getHours();
var minutos = objectData.getMinutes();
var segundos = objectData.getSeconds();

function relogio() {
    
    console.log("Função executada com sucesso!");

    hora = objectData.getHours();
    minutos = objectData.getMinutes();
    segundos = objectData.getSeconds();

    if(segundos < 10) {
        segundos = '0' + segundos;
    }

    if(minutos < 10) {
        minutos = '0' + minutos;
    }

    if(hora < 10) {
        hora = '0' + hora;
    }

    document.getElementById("painel").innerHTML = hora + ":" + minutos + ":" + segundos;

    setTimeout(relogio, 1000);


}

 

O código acima está repetindo corretamente. Isso é verificado no console através da mensagem "Função executada corretamente". Porém não atualiza o relógio! Como isso é possível se antes tudo foi testado e o relógio escreve na tela de boa. Alguém que enxergue onde está o erro, pode me ajudar?

Share this post


Link to post
Share on other sites

Experimenta assim:

window.onload = relogio;

function relogio() {
    var objectData = new Date();
    //console.log("Função executada com sucesso!");
    hora = objectData.getHours();
    minutos = objectData.getMinutes();
    segundos = objectData.getSeconds();
    if(segundos < 10) {
        segundos = '0' + segundos;
    }
    if(minutos < 10) {
        minutos = '0' + minutos;
    }
    if(hora < 10) {
        hora = '0' + hora;
    }
    document.getElementById("painel").innerHTML = hora + ":" + minutos + ":" + segundos;
    setTimeout(relogio, 1000);
}

 

  • Obrigado! 1

Share this post


Link to post
Share on other sites

Valeu, wootzor! O seu código funcionou! Você só esqueceu de adicionar a palavra reservada "var" antes das variáveis hora, minutos e segundos dentro da função. E também, é bom explicar o porquê de o erro estar acontecendo, para que não somente eu, mas outras pessoas possam aprender.

Obrigado pela ajuda!

Share this post


Link to post
Share on other sites

Tens razão. Retirei as variáveis globais e esqueci-me de as declarar dentro da função.

 

Tirando isso, a minha única alteração foi substituir o evento click na página pelo onload, que chama a função assim que a página é carregada.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Hacker_Buiu
      Costuma dar erro quando você vai curtir um tópico?
    • By Rasp
      Fala galera! Estou com a seguinte situação e queria uma ajuda de pôr onde seguir o meu raciocínio para resolver:
       
      Possuo um array X com dados que vem do meu backend, exemplo:
       
      array = [ 0: [1, 'Banana', '3.00', '...'], 1: [2, 'Maça', '4.00', '...'], 2: [3, 'Abacaxi', '5.00', '...'] ];
      Monto para o usuário uma tela com a tabela desses dados, com informações resumidas e um botão "detalhar" para exibir o conteúdo em um modal:
       
      | ID | Fruta | Preço| Ação | | 1 | Banana | 3.00 | Detalhar | | 2 | Maça | 4.00 | Detalhar | | 3 | Abacaxi| 5.00 | Detalhar | Até aí tudo certo, funciona redondo. Mas preciso fazer com que ao abrir o modal, independente do registro que cliquei (ID 1, 2 ou 3), eu possa "navegar" entre os outros registros no modal (possuo botões para isso) sem precisar sair do modal, como se fosse uma paginação.
       
      Como poderia construir essa lógica?
    • By Matheus Bispo
      Bom dia.
       
      Estou com uma situação, tenho um Objeto chamado parametros.params.
       
      Dentro deste objeto, pode vir 1 item ou 2 item ou 3 item, enfim, N itens.
       
      Exemplo:
       
      Parametros.params{
      carro: "Gol"
      };
       
      ou
       
      Parametros.params{
      modalidade: "Futebol",
      duracao: 90
      };
       
      Percebem que os nomes dos itens, os valores e a quantidade mudaram, isso é o que acontece no meu caso. Continuando...
       
      Tenho 2 funções:
       
      function chamarmetodo1(argument1, argument2){};
       
      function chamarmetodo2(argument){};
       
      Existe algum método de eu criar algo parecido com isso
       
      chamarmetodo1(parametros.params);
       
      chamarmetodo2(parametros.params);
       
      Ou seja, gostaria de chamar o método que for, indiferente de quantos parâmetros ele espera, e com os itens que vem dentro do meu objeto parametros.params, tem como fazer isso?
       
       
    • By Hacker_Buiu
      Porque demora para aprovar meus tópicos?Porque quando tento curtir dá erro,e perco o direito de criar um novo tópico?
    • By bruno153
      Pessoal, 
       
      preciso super de uma ajuda com o seguinte problema, eu preciso transformar com o javascript um JSON dessa forma:

      {
        "registros": {
          "valores": [
            {
              "label": "DANILO KATHSON BILRO DE SOUZA",
              "data": [
                {
                  "realizado": "96.51"
                },
                {
                  "realizado": "94.58"
                },
                {
                  "realizado": "89.99"
                },
                {
                  "realizado": "93.38"
                }
              ]
            },
            {
              "label": "FRANCISCO GEILSON RAMALHO",
              "data": [
                {
                  "realizado": "88.94"
                },
                {
                  "realizado": "95.95"
                },
                {
                  "realizado": "94.20"
                },
                {
                  "realizado": "92.36"
                }
              ]
            }
          ]
        }
      }
       
      Para que ele fique dessa forma:

      {
        "registros": {
          "valores": [
            {
              "label": "DANILO KATHSON BILRO DE SOUZA",
              "data": ["96.51", "94.58", "89.99", "93.38"]
              ]
            },
            {
              "label": "FRANCISCO GEILSON RAMALHO",
              "data": ["88.94", "95.95", "94.20", "92.36"
              ]
            }
          ]
        }
      }

      poderiam me dar um caminho de como eu poderia fazer isso?

      Desde já, agradeço muito pelo atenção.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.