|
Categorieën >
JavaScript
JS countdown prob
|
|
|
offline
|
MySQL 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)
var u;
var m;
var s;
function timeleft()
{
s = parseInt(document.getElementById('sec').innerHTML) - 1;
if(s<10){s = '0'+s;}
document.getElementById('sec').innerHTML = s;
if(s<0)
{
m = parseInt(document.getElementById('min').innerHTML) - 1;
document.getElementById('sec').innerHTML = 59;
if(m<0)
{
document.getElementById('min').innerHTML = 59;
u = parseInt(document.getElementById('u').innerHTML) - 1;
if(u<0)
{
exit_();
}
else
{
document.getElementById('u').innerHTML = m;
}
}
else
{
document.getElementById('min').innerHTML = m;
}
}
setTimeout("timeleft()",1000);
}
var u; var m; var s; function timeleft() { s = parseInt(document.getElementById('sec').innerHTML) - 1; if(s<10){s = '0'+s;} document.getElementById('sec').innerHTML = s; if(s<0) { m = parseInt(document.getElementById('min').innerHTML) - 1; document.getElementById('sec').innerHTML = 59; if(m<0) { document.getElementById('min').innerHTML = 59; u = parseInt(document.getElementById('u').innerHTML) - 1; if(u<0) { exit_(); } else { document.getElementById('u').innerHTML = m; } } else { document.getElementById('min').innerHTML = m; } } setTimeout("timeleft()",1000); }
|
5 antwoorden
|
|
|
offline
|
Content Manager
|
Doe lijn 7 weg en vervang lijn 8:
document.getElementById('sec').innerHTML = (s < 10) ? '0' + s : s;
document.getElementById('sec').innerHTML = (s < 10) ? '0' + s : s;
|
|
|
|
offline
|
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'?
|
Stijn – 24/05/2010 19:30 (Laatst gewijzigd op 24/05/2010 23:56)
|
|
offline
|
Content Manager
|
Inderdaad. Je moet de variabelen u, m en s niet halen uit je getElementById. Hou die waarden bij in je variabelen.
var uren = 0;
var minuten = 0;
var seconden = 10;
function countdown()
{
setTimeout("timeleft()", 1000);
}
function timeleft()
{
seconden -= 1;
if(seconden < 0) {
seconden = 59;
minuten -= 1;
if(minuten < 0) {
minuten = 59;
uren -= 1;
if(uren < 0) {
alert("TRIIIIIIIIIIIIING");
return;
}
}
}
document.getElementById('sec').innerHTML = (seconden < 10) ? "0" + seconden : seconden;
document.getElementById('min').innerHTML = (minuten < 10) ? "0" + minuten : minuten;
document.getElementById('u').innerHTML = (uren < 10) ? "0" + uren : uren;
setTimeout("timeleft()", 1000);
}
var uren = 0; var minuten = 0; var seconden = 10; function countdown() { setTimeout("timeleft()", 1000); } function timeleft() { seconden -= 1; if(seconden < 0) { seconden = 59; minuten -= 1; if(minuten < 0) { minuten = 59; uren -= 1; if(uren < 0) { alert("TRIIIIIIIIIIIIING"); return; } } } document.getElementById('sec').innerHTML = (seconden < 10) ? "0" + seconden : seconden; document.getElementById('min').innerHTML = (minuten < 10) ? "0" + minuten : minuten; document.getElementById('u').innerHTML = (uren < 10) ? "0" + uren : uren; setTimeout("timeleft()", 1000); }
Zoiets dus. Zie je waar jij fout gaat?
|
|
|
|
offline
|
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
|
Nieuw lid
|
|
Dit onderwerp is gesloten.
|
|
|