2012-10-04 3 views
3

Je possède ce code javascriptJavascript Countdown ne fonctionne pas

function updateClock() { 
     time = time + 1; 
     var mins = 1; 
     var secs = 50 
     var mins = parseInt(mins/ 60); 
     var secs = time - mins * 60; 

     mins = mins.toString(); 
     secs = secs.toString(); 

     if (mins.length < 2) 
      mins = "0" + mins; 
     if (secs.length < 2) 
      secs = "0" + secs; 


     var timeDisp = document.getElementById("timerDisp"); 
     timeDisp.innerText = mins + ":" + secs; 
    } 

Elle compte combien de temps a passé, mais si je veux faire un compte à rebours? (ou faire l'inverse) au lieu de garder une trace de l'heure, je veux donner si un temps défini alors que le temps passe le temps diminue, disons 1 minute et 15 secondes, comment pourrais-je exécuter cela sur le code donné?

+2

Ça ne marche pas parce que c'est un chronomètre, pas une minuterie. Avez-vous essayé de modifier le code? – Blender

+0

Je l'ai fait, mais il fait toujours la même chose. J'ai essayé de fixer un temps défini mais ça continue à finir sur le même résultat – KyelJmD

+1

Postez votre code actuel. Cela devrait être plus facile à travailler. – Blender

Répondre

5

Vous pouvez exécuter votre updateClock() toutes les secondes avec setTimeout() pour créer un compte à rebours.

var time; 
function UpdateClock() { 
    time = time - 1; 

    if (time > 0) { 
     setTimeout(UpdateClock, 1000); // 1000 miliseconds 
    } 

    var mins = parseInt(time/60, 10); 
    var secs = time - mins * 60; 

    mins = mins.toString(); 
    secs = secs.toString(); 

    if (mins.length < 2) 
     mins = "0" + mins; 
    if (secs.length < 2) 
     secs = "0" + secs; 

    timeDisp.innerText = mins + ":" + secs + " left"; 
} 

function StartCountdown(countdowntime) { 
    time = countdowntime; 
    updateClock(); 
} 
+0

Vous pouvez déplacer l'appel 'setTimeout' aussi tôt dans' UpdateClock' que vous le pouvez. Autrement, le traitement supplémentaire pour les autres lignes pourrait signifier que le temps global entre les «tics» est en réalité légèrement supérieur à 1000ms. Pas un tel problème dans cet exemple, mais si vous ne faites pas attention, vous pouvez vous retrouver avec une minuterie qui dérive de «temps réel». –

+0

Que diriez-vous pour les secondes, comment je l'afficher? Je sépare les secondes et les minutes – KyelJmD

+0

@KyelJmD De la même façon que vous le faisiez dans votre implémentation. –