none
Relógio - Javascript RRS feed

  • Pergunta

  • Fala pessoal, tudo bom??? Espero que sim...

     

    Alguém poderia me ajudar com um relógio em javascript, tenho o seguinte script em minha página que mostra um relógio com a hora local do sistema:

     

    <script type="text/javascript">

    function Clock()

    {

    var clock = new Date();

    var time = ColocaZero(clock.getHours()) + ":" + ColocaZero(clock.getMinutes()) + ":" + ColocaZero(clock.getSeconds());

    document.getElementById("lblClock").innerHTML = time;

    setTimeout(Clock, 1000);

    }

    function ColocaZero(Value)

    {

    return (Value > 9) ? "" + Value : "0" + Value;

    }

    </script>

     

    Eu gostaria muito de poder mudar a hora, minuto e até mesmo segundo desse relógio, mas naum sei como proceder, tipo tá marcando 14:45:00 ai eu queria mudar pra 13:00:00, teria como??? Ah eu pego a hora que eu quero marcar de um arquivo xml, bem pequeno apenas com uma tag <time>12:00:00</time>

     

    Tem como fazer isso???

     

    []'s

     

    Rafael

    quinta-feira, 10 de abril de 2008 22:53

Respostas

  • Rafale, faz um teste no código abaixo:

     

    Code Snippet

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Timer</title>
    <script>
    function timer(h,m,s)
    {
     
     s += 1;
     if (s == 60){
      s = 0;
      m++;
     }
     if (m == 60){
      m = 0;
      h++;
     }
     if (s.toString().length == 1) { s = '0'+s; }
     if (m.toString().length == 1) { m = '0'+m; }
     document.getElementById("timer").value = h + ":" + m + ":" + s;
     setTimeout("timer(" + h + "," + m + "," + s + ")",1000);
    }
    </script>
    </head>
    <body onLoad="timer(12,59,53);">
    <input type="text" id="timer" />
    </body>
    </html>

     

     

     

    Abraços

     

    Estevam

    quarta-feira, 16 de abril de 2008 17:23

Todas as Respostas

  • Rafael tente fazer assim:

     

    Code Snippet

    <script type="text/javascript">

    function Clock(h,m,s)

    {

    var clock = new Date();

    clock.setHours(h,m,s);

     

    var time = ColocaZero(clock.getHours()) + ":" + ColocaZero(clock.getMinutes()) + ":" + ColocaZero(clock.getSeconds());

    document.getElementById("lblClock").innerHTML = time;

    setTimeout(Clock, 1000);

    }

    function ColocaZero(Value)

    {

    return (Value > 9) ? "" + Value : "0" + Value;

    }

    </script>

     

     

    Onde na chamada da função voce passa os valores referentes a hora, minuto e segundo:

    Exemplo:

    Clock(14,30,45); seta a hora para as 14:30:45

     

    Faz um teste

     

    Abraços

     

    Estevam

    sexta-feira, 11 de abril de 2008 13:23
  • Fala Estevam, brigado pela sua resposta.

     

    Fiz um teste aqui e não funcionou, aparece tudo certinho mais no primeiro setTimeout ele fica: 0NaN:0NaN:0NaN

     

     

    Já sei o que tá acontecendo já que eu chamo a minha função no onload do body, no timeout da minha função ele não assume o valor que eu pus no onload e sim como h, m, s, que são strings, ai ele dis que não é um número o valor entendeu???

     

    NaN = Not a Number Sad

     

    Acho que eu vou ter que fazer um relógio na marra mesmo, any ideias????

     

    Aproveitar pra ver se vc pode me ajudar em ler um xml via Javascript.

     

    o arquivo XML só tem uma única tag que é:

    <time>18:50:00</time>

     

    Só quero pegar esse valor, Estevam você pode me ajudar???

     

    []'s

     

    Rafael

    sexta-feira, 11 de abril de 2008 17:20
  • Rafael, na verdade este erro se da porque setTimeout, recebe uma função, mas agora a função requer parâmetros, então por isso erro, abaixo segue o código com uma gambizinha, mas creio que ainda não seja o que você quer.

     

    Code Snippet

    <script type="text/javascript">
    function Clock(h,m,s)
    {
     var clock = new Date();
     if ((h != 0) && (m != 0) && (s != 0)) { clock.setHours(h,m,s); }
     
     var time = ColocaZero(clock.getHours()) + ":" + ColocaZero(clock.getMinutes()) + ":" + ColocaZero(clock.getSeconds());
     //document.getElementById("lblClock").value = time;
     document.getElementById("lblClock").innerHTML = time;
     setTimeout("Clock(0,0,0)", 1000);
    }

    function ColocaZero(Value)
    {
    return (Value > 9) ? "" + Value : "0" + Value;
    }

    </script>

     

     

     

    Quando você chama a função pela primeira vez ele traz a hora que você passou como parâmetro, só que quando ele chama a setTimeout ele chama a função Clock novamente, se você passar algum parâmetro ali vai sempre estar com a mesma hora, e se fizer do que que esta acima, quando ele chamar nova função ele vai atualizar a hora atual, por exemplo, se você setar para 12:15:00, quando o setTimeout chamar a função novamente passando os parametros como zero, ele irá atualizar para a hora atual do sistema.

     

    Agora me o que realmente você gostaria de fazer com isso? um contador??

     

    Abraços

     

    Estevam

    sexta-feira, 11 de abril de 2008 20:15
  • Acho que não chega a ser um contador, apenas um relógio que funcione em real time dado a hora, minuto e segundo.

     

    To tentando aqui mais tá difícil.

     

    []'s

     

    Valeu pela ajuda

    terça-feira, 15 de abril de 2008 20:00
  • Mas tipo você quer um relógio no qual o usuário indique o horário no qual vai começar a contar as horas?

     

    Abraços

     

    Estevam

    terça-feira, 15 de abril de 2008 20:11
  • Isso mesmo, não é o usuário, mais é essa a idéia, a hora vem de um xml com apenas uma tag: <time>12:30:00</time>

     

    []'s

     

    Rafael

     

    quarta-feira, 16 de abril de 2008 16:19
  • Isso mesmo, não é o usuário, mais é essa a idéia, a hora vem de um xml com apenas uma tag: <time>12:30:00</time>

     

    []'s

     

    Rafael

     

    quarta-feira, 16 de abril de 2008 16:19
  • Rafale, faz um teste no código abaixo:

     

    Code Snippet

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Timer</title>
    <script>
    function timer(h,m,s)
    {
     
     s += 1;
     if (s == 60){
      s = 0;
      m++;
     }
     if (m == 60){
      m = 0;
      h++;
     }
     if (s.toString().length == 1) { s = '0'+s; }
     if (m.toString().length == 1) { m = '0'+m; }
     document.getElementById("timer").value = h + ":" + m + ":" + s;
     setTimeout("timer(" + h + "," + m + "," + s + ")",1000);
    }
    </script>
    </head>
    <body onLoad="timer(12,59,53);">
    <input type="text" id="timer" />
    </body>
    </html>

     

     

     

    Abraços

     

    Estevam

    quarta-feira, 16 de abril de 2008 17:23
  • Muito obrigado Estevam, peguei esse seu script e consegui adaptálo ao meu jeito.

     

    []'s

     

    Rafael

    quarta-feira, 16 de abril de 2008 20:41