Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema con setTimeout per creare un Timer

    Ciao ho un problema sto creando un timer che assume in ingresso una lista di conti alla rovesta da eseguire, ad esempio prima avvia 10 secondi di conto alla rovescia poi 5 secondi e così via.

    Questo è il mio codice:
    codice:
    function run_programma() {  
    
    var x=0;
        if(count>1)
        {
            for(x=1;x<count;x++)
            {
                    decimi=0;
                    ore= document.getElementById('user_ore' + x).value;
                    minuti= document.getElementById('user_min' + x).value;
                    secondi= document.getElementById('user_sec' + x).value;
                    avvia();
                
            }
        }
    
    } 
    
    function cronometro() {  
         if(stop == false) {  
              decimi--;  
              if(decimi < 0) {  
                   decimi = 9;  
                   secondi--;  
              }  
              if(secondi < 0) {  
                   secondi = 59;  
                   minuti--;  
              }  
              if(minuti < 0) {  
                   minuti = 59;  
                   ore--;  
              }  
              mostra();  
              setTimeout("cronometro()", 100);  
         }  
    }  
    
    function avvia() {  
        if(stop == true) {  
             stop = false; 
             cronometro();  
        }  
    }
    Con il mio codice il ciclo for viene eseguito immediatamente, per cui se deve eseguire prima 5 secondi poi 10 esegue solo i 10 secondi (i cinque non li fà), il mio intento invece è quello di eseguirli in sequenza

  2. #2
    codice:
    function cronometro() {  
         if(stop == false) {  
              decimi--;  
              if(decimi < 0) {  
                   decimi = 9;  
                   secondi--;  
              }  
              if(secondi < 0) {  
                   secondi = 59;  
                   minuti--;  
              }  
              if(minuti < 0) {  
                   minuti = 59;  
                   ore--;  
              }  
              mostra();  
              setTimeout("cronometro()", 100);  
         }  
    }
    La funzione cronometro non dovrebbe ripetersi in maniera ricorsiva fino al termine del primo conteggio?

    Mi ero dimenticato la funzione mostra :

    codice:
    function mostra() {  
    
         if(ore < 10) vis = "0"; else vis = ore;  
         if(minuti < 10) vis = vis + "0";  
         vis = vis + minuti + ":";  
         if(secondi < 10) vis = vis + "0";  
         vis = vis + secondi + ":" + decimi;  
         document.getElementById("vis").innerHTML = vis;  
        
         if(ore==0&&minuti==0&&secondi==0&&decimi==0&&stop==false)
         {  
             stop=true;
         }
    }

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Ciao, inserisci alcuni console.log nelle funzioni per vedere cosa restituiscono
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.