login  Naam:   Wachtwoord: 
Registreer je!
 Forum

JS countdown prob

Offline daanlaan - 24/05/2010 14:00
Avatar van daanlaanMySQL interesse Ik probeer een simpele js countdown te maken maar heb hier en daar wat probs.
Als de sec, min of uren < 10 moet er een nul toegevoegd worden, dit doet hij 1 keer bij de 10 en daarna hangt hij vast... (ik heb het voorlopig enkel bij seconden staan in het script)
  1. var u;
  2. var m;
  3. var s;
  4. function timeleft()
  5. {
  6. s = parseInt(document.getElementById('sec').innerHTML) - 1;
  7. if(s<10){s = '0'+s;}
  8. document.getElementById('sec').innerHTML = s;
  9. if(s<0)
  10. {
  11. m = parseInt(document.getElementById('min').innerHTML) - 1;
  12. document.getElementById('sec').innerHTML = 59;
  13. if(m<0)
  14. {
  15. document.getElementById('min').innerHTML = 59;
  16. u = parseInt(document.getElementById('u').innerHTML) - 1;
  17. if(u<0)
  18. {
  19. exit_();
  20. }
  21. else
  22. {
  23. document.getElementById('u').innerHTML = m;
  24. }
  25. }
  26. else
  27. {
  28. document.getElementById('min').innerHTML = m;
  29. }
  30. }
  31. setTimeout("timeleft()",1000);
  32. }

5 antwoorden

Gesponsorde links
Offline Stijn - 24/05/2010 14:05
Avatar van Stijn PHP expert Doe lijn 7 weg en vervang lijn 8:

  1. document.getElementById('sec').innerHTML = (s < 10) ? '0' + s : s;
Offline daanlaan - 24/05/2010 15:28
Avatar van daanlaan MySQL interesse het werkt al een beetje beter maar hij gaat nu zo => 55:10 => 55:09 => 54:59
is het omdat hij enkel de eerste 0 ziet in die span? ipv '09'?
Offline Stijn - 24/05/2010 19:30 (laatste wijziging 24/05/2010 23:56)
Avatar van Stijn PHP expert Inderdaad. Je moet de variabelen u, m en s niet halen uit je getElementById. Hou die waarden bij in je variabelen.

  1. var uren = 0;
  2. var minuten = 0;
  3. var seconden = 10;
  4.  
  5. function countdown()
  6. {
  7. setTimeout("timeleft()", 1000);
  8. }
  9.  
  10.  
  11. function timeleft()
  12. {
  13. seconden -= 1;
  14.  
  15. if(seconden < 0) {
  16. seconden = 59;
  17. minuten -= 1;
  18.  
  19. if(minuten < 0) {
  20. minuten = 59;
  21. uren -= 1;
  22.  
  23. if(uren < 0) {
  24. alert("TRIIIIIIIIIIIIING");
  25. return;
  26. }
  27. }
  28. }
  29.  
  30. document.getElementById('sec').innerHTML = (seconden < 10) ? "0" + seconden : seconden;
  31. document.getElementById('min').innerHTML = (minuten < 10) ? "0" + minuten : minuten;
  32. document.getElementById('u').innerHTML = (uren < 10) ? "0" + uren : uren;
  33.  
  34. setTimeout("timeleft()", 1000);
  35. }


Zoiets dus. Zie je waar jij fout gaat?
Offline Richard - 25/05/2010 07:53
Avatar van Richard Crew algemeen Ik zou niet gaan vertrouwen op een seconde setTimeout, dat is absoluut niet accuraat.

Pak een new Date(), maak daar een getal van (+new Date()) en reken daar mee.

En oh: setTimeout behoor je een functie mee te geven, geen string. Dat hele "timeleft()"-gebeuren is onnodig: setTimeout(timeleft, 500); is prima als je gewoon met de datum rekent.
Offline jasper56 - 25/05/2010 16:08
Avatar van jasper56 Nieuw lid je kan ook even kijken naar: http://keith-wood.name/countdown.html
Heb deze zelf een tijdje geleden gebruikt en werkt erg fijn.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.166s