Jump to content
Phenom

Como manter uma função mesmo depois de um refresh? Javascript

Recommended Posts

Olá, sou novo aqui e estou criando um contador e calcular de preço por minutos.

Funciona basicamente como um cronômetro que faz um calculo por minuto, está tudo funcionando normalmente... o problema é quando atualiza a página e o cronômetro reinicia, existe algum modo de guardar essa função numa sessão ou em cookies? (vou colocar o código aqui mesmo e tbm anexei no post).
 

var segundos = new Number();
var segundos = 0;
var minutos = new Number();
var minutos = 0;
var horas = new Number();
var horas = 0;

var minutos_inf = new Number();
var minutos_inf = 0;

var valor_por_minuto = 0.10;

function start() {
    segundos = segundos + 1;
    if (segundos >= 60) {
        minutos = minutos + 1;
        minutos_inf = minutos_inf + 1;
        segundos = 0;
        if (minutos >= 60) {
            horas = horas + 1;
            minutos = 0;
        }
    }

    if (segundos < 10) {
        var m_segundos = "0" + segundos;
    } else {
        var m_segundos = segundos;
    }

    if (minutos < 10) {
        var m_minutos = "0" + minutos;
    } else {
        var m_minutos = minutos;
    }

    if (horas < 10) {
        var m_horas = "0" + horas;
    } else {
        var m_horas = horas;
    }

    sessionStorage.setItem('tempo', m_horas + ":" + m_minutos + ":" + m_segundos);
    tempo.innerText = sessionStorage.getItem('tempo');

    var valor_total = (valor_por_minuto * minutos_inf).toFixed(2);
    valor.innerText = "R$ " + valor_total;

    setTimeout('start();', 1000);
}

config.js

Share this post


Link to post
Share on other sites

Uma forma poderia ser ao invés de salvar em cookie a hora:minuto:segundo decorrido, salvar em cookie o dia/hora inicial e o javascript calcularia sempre o tempo decorrido desta data inicial, com isso, independente do refresh sempre teria o dia/hora inicial

Share this post


Link to post
Share on other sites

@Phenom, buenas.

 

Vi que está usando o SessionStorage, não lembrava que ele tinha essa "feature" de zerar com um refresh.

Já tentou usar o LocalStorage?

  • +1 1

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 Rodrigo5468
      Olá, boa tarde!
       
      Eu estava procurando na internet, mas não obtive nenhum resultado significativo.
      Eu preciso de um script em php que converte os links do youtube para o formato .mp4. Como que eu posso fazer isso? Alguma dica?
      Quero que quando o usuário informa o link do youtube no input e clica no botão de converter baixe o vídeo e faz a conversão para .mp4 e fornece para o usuário o link convertido para .mp4.
       
       
      Obrigado desde já.
    • By daviassumpcao
      Pessoal... há valores em um JSON sendo exibidos por um JS (imagem anexo)... preciso verificar se um valor "x" está em um determinado nó do JSON. E a partir daí exibir uma div.... marquei na imagem com um círculo rosa qual valor quero verificar porém meu script não funciona... material de estudo. É possível fazer isso acontecer?
       
      JS
      const jsonCat = vtxctx.categoryId; const catProd = JSON.parse(jsonCat); var divProd = document.getElementById('faq-connect'); if (catProd.categoryId == 10103) { divProd.style.display = 'block'; } else{ divProd.style.display = 'none'; } HTML para exibir uma DIV em caso positivo
      <div class="faq-connect" style="display:none"> <p>Sucesso!</p> </div>  
       

    • By paulinhosupriano
      Bom dia a todos!
       
      Gente, tenho uma dúvida!
       
      Muitos desenvolvedores utilizam o framework nodejs com express para trabalhar com API e também estão utilizando o ADONISJS.
      Minha duvida seria, em alguns projetos devemos criar configurações onde o usuário cliente não poderá ter acesso a visualização dos dados public de constantes de configuração, url ou banco. 
      Como protejo essas informações?
      Muitas dizem que seria o arquivo .env. 
       
      Como protegerei essas informações? 
      Exemplo firabase como proteger os dados token etc.
       
      Poderiam informar tutorial, curso, vídeo algo a respeito do assunto? 
       
      Agradecido!
       
    • By violin101
      Caros amigos, saudações...
       
      Estou com uma dúvida de dados vindo do MySql, para preencher Tabela via AJAX.
       
      Como faço para formatar o CAMPO no formato MOEDA, ou seja:
      o campo vem.: 12.00
      formatar para: 12,00
       
      o código está assim:
      function montaTable(cep){ $.ajax({ url: "<?php echo base_url();?>site/produtos/getByCep", type: "POST", dataType:"json", data:{ cep: cep}, success:function(data){ //Remove Mensagem da Tabela $("#tborden tbody tr.message").remove(); var cols = ""; for (var i = 0; i < data.length; i++) { cols += "<tr>"; cols += "<td>" + data[i].cepRegiao + "</td>"; cols += "<td>" + data[i].frtEntreg + "</td>"; cols += "<td>" + data[i].vlrFrete + "</td>"; //<--como formatar esse campo cols += "</tr>"; } //Atualiza a Tabela $("#tborden tbody").empty(); //Adiciona os Itens a Tabela $("#tborden tbody").append(cols); } });//Fim - ajax Valor Frete }

      Grato,
       
      Cesar
    • By lezão
      Boa noite!
      Encontrei esse codigo na net, mas naun estou sabendo utilizar ele em meu site.
      Já tentei de tudo, mas ele naun imprime o tempo regressivo na tela.
      var tempo = new Number(); // Tempo em segundos tempo = 60; function startCountdown(){ // Se o tempo não for zerado if((tempo - 1) >= 0){ // Pega a parte inteira dos minutos var min = parseInt(tempo/60); // Calcula os segundos restantes var seg = tempo%60; // Formata o número menor que dez, ex: 08, 07, ... if(min < 10){ min = "0"+min; min = min.substr(0, 2); } if(seg <=9){ seg = "0"+seg; } // Cria a variável para formatar no estilo hora/cronômetro horaImprimivel = '00:' + min + ':' + seg; //JQuery pra setar o valor $("#sessao").html(horaImprimivel); // Define que a função será executada novamente em 1000ms = 1 segundo setTimeout('startCountdown()',1000); // diminui o tempo tempo--; // Quando o contador chegar a zero faz esta ação } else { window.open('index.php', '_self'); } } // Chama a função ao carregar a tela startCountdown(); Eu ja tentei dessas formas, e naun funcionou.
      1 <div id="Number"></div> 2 <div id="startCountdown()"></div> 3 <div id="startCountdown"></div> 4 <div id="timer"></div> 5 <div id="horaImprimivel"></div> ALGUÉM PODE ME AJUDAR?????
      // Quando o contador chegar a zero faz esta ação } else { window.open('index.php', '_self'); } Qnd dá o tempo ele chama a pagina corretamente, apenas naun esta imprimindo o contador na tela.
×

Important Information

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