|
Categorieën >
JavaScript
countdown
compudoc – 24/07/2007 17:34 (Laatst gewijzigd op 24/07/2007 17:35)
|
|
offline
|
PHP beginner
|
ik heb een countdown gevonden op internet maar als de tijd verstreken is gaat de tijd verder in de min..
dus bijvoorbeeld; -1 dag, 23 uur, 50 minuten, 30 seconde
nou wil ik bijvoorbeeld dat als het 0:00:00:00 is dat er vanaf dan een bericht komt te staan. zoiets als: de tijd is verstreken
hoe kan ik dit doen
<SCRIPT language="JavaScript">
countdownTo=new Date();
countdownTo.setYear(2007);
countdownTo.setMonth(10);
countdownTo.setDate(17);
countdownTo.setHours(00);
countdownTo.setMinutes(00);
countdownTo.setSeconds(0);
function countdown() {
var now=new Date();
var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000);
var txt="";
var deltaDays=Math.floor(deltaSecs/86400);
deltaSecs-=86400*deltaDays;
txt+=deltaDays+" dagen, ";
var deltaHours=Math.floor(deltaSecs/3600);
deltaSecs-=3600*deltaHours;
txt+=deltaHours+" uur, ";
var deltaMins=Math.floor(deltaSecs/60);
deltaSecs-=60*deltaMins;
txt+=deltaMins+" minuten, ";
txt+=deltaSecs+" seconde , ";
txt=txt.substr(0,txt.length-2);
document.getElementById("countdown").innerHTML=txt;
countdownTimer=setTimeout("countdown()",1000);
}
</SCRIPT>
<SCRIPT language="JavaScript"> countdownTo=new Date(); countdownTo.setYear(2007); countdownTo.setMonth(10); countdownTo.setDate(17); countdownTo.setHours(00); countdownTo.setMinutes(00); countdownTo.setSeconds(0); function countdown() { var now=new Date(); var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000); var txt=""; var deltaDays=Math.floor(deltaSecs/86400); deltaSecs-=86400*deltaDays; txt+=deltaDays+" dagen, "; var deltaHours=Math.floor(deltaSecs/3600); deltaSecs-=3600*deltaHours; txt+=deltaHours+" uur, "; var deltaMins=Math.floor(deltaSecs/60); deltaSecs-=60*deltaMins; txt+=deltaMins+" minuten, "; txt+=deltaSecs+" seconde , "; txt=txt.substr(0,txt.length-2); document.getElementById("countdown").innerHTML=txt; countdownTimer=setTimeout("countdown()",1000); } </SCRIPT>
|
4 antwoorden
|
|
|
offline
|
HTML interesse
|
var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000);
var txt="";
var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000); var txt="";
vervangen door:
var txt="";
var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000);
if(deltaSecs <= 0){
txt = "De tijd is verstreken";
}
else{
//de rest van je script
}
var txt=""; var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000); if(deltaSecs <= 0){ txt = "De tijd is verstreken"; } else{ //de rest van je script }
|
|
|
|
offline
|
PHP beginner
|
Brycer bedankt maar het probleem is dat het scriptje op de laatste seconde voordat de tijd is verstreken blijft hangen.
Als je de pagina doet vernieuwen doet ie ook helemaal niks meer weergeven (geen tijd of melding).
hoe kan ik dit probleem oplossen?
dit is mijn script nu: <SCRIPT language="JavaScript">
countdownTo=new Date();
countdownTo.setYear(2007);
countdownTo.setMonth(11);
countdownTo.setDate(17);
countdownTo.setHours(00);
countdownTo.setMinutes(00);
countdownTo.setSeconds(0);
function countdown() {
var now=new Date();
var txt="";
var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000);
if(deltaSecs <= 0){
txt = "tijd is verstreken";
} else {
var deltaDays=Math.floor(deltaSecs/86400);
deltaSecs-=86400*deltaDays;
txt+=deltaDays+" dagen, ";
var deltaHours=Math.floor(deltaSecs/3600);
deltaSecs-=3600*deltaHours;
txt+=deltaHours+" uur<br />";
var deltaMins=Math.floor(deltaSecs/60);
deltaSecs-=60*deltaMins;
txt+=deltaMins+" min, ";
txt+=deltaSecs+" sec tot..<br />de tijd is verstreken, ";
txt=txt.substr(0,txt.length-2);
document.getElementById("countdown").innerHTML=txt;
countdownTimer=setTimeout("countdown()",1000);
}
}
</SCRIPT>
<SCRIPT language="JavaScript"> countdownTo=new Date(); countdownTo.setYear(2007); countdownTo.setMonth(11); countdownTo.setDate(17); countdownTo.setHours(00); countdownTo.setMinutes(00); countdownTo.setSeconds(0); function countdown() { var now=new Date(); var txt=""; var deltaSecs = Math.floor((countdownTo.getTime()-now.getTime())/1000); if(deltaSecs <= 0){ txt = "tijd is verstreken"; } else { var deltaDays=Math.floor(deltaSecs/86400); deltaSecs-=86400*deltaDays; txt+=deltaDays+" dagen, "; var deltaHours=Math.floor(deltaSecs/3600); deltaSecs-=3600*deltaHours; txt+=deltaHours+" uur<br />"; var deltaMins=Math.floor(deltaSecs/60); deltaSecs-=60*deltaMins; txt+=deltaMins+" min, "; txt+=deltaSecs+" sec tot..<br />de tijd is verstreken, "; txt=txt.substr(0,txt.length-2); document.getElementById("countdown").innerHTML=txt; countdownTimer=setTimeout("countdown()",1000); } } </SCRIPT>
|
|
|
|
offline
|
HTML interesse
|
Ja dat klopt.
Dit komt doordat deltasecs zodra het verschil tussen nu en de tijd kleiner dan 1 seconde wordt meteen 0 wordt (omdat je floor gebruikt). En volgens je if-lus wordt txt dan "tijd is verstreken".
Maar document.getElementById("countdown").innerHTML=txt;
countdownTimer=setTimeout("countdown()",1000);
document.getElementById("countdown").innerHTML=txt; countdownTimer=setTimeout("countdown()",1000);
staat in het else-gedeelte van je lus, dus als deltasecs 0 is, wordt bovenstaande code niet meer uitgevoerd...
De text "tijd is verstreken" wordt dus niet weergegeven en de functie wordt ook niet opnieuw aangeroepen.
Hoe het wel moet (regel 27 t/m 35):
txt+=deltaMins+" min, ";
txt+=deltaSecs+" sec tot..<br />de tijd is verstreken, ";
txt=txt.substr(0,txt.length-2);
}
document.getElementById("countdown").innerHTML=txt;
countdownTimer=setTimeout("countdown()",1000);
}</SCRIPT>
txt+=deltaMins+" min, "; txt+=deltaSecs+" sec tot..<br />de tijd is verstreken, "; txt=txt.substr(0,txt.length-2); } document.getElementById("countdown").innerHTML=txt; countdownTimer=setTimeout("countdown()",1000); }</SCRIPT>
Succes verder 
MvG Brycer
|
|
|
|
offline
|
PHP beginner
|
Brycer, heel erg bedankt!
het werkt nu perfect
|
Dit onderwerp is gesloten.
|
|
|