Avatar billede Slettet bruger
14. maj 2004 - 12:36 Der er 13 kommentarer og
1 løsning

nedtællingsscript

Hej!

Jeg har herunder et script som viser en nedtælling til en dato.

Jeg vil dog gerne have den til at vise tiden som:

3 dage, 16 timer, 40 minutter og 25 sekunder

Som det vises nu viser den Hvad der nu svarer til 3 dage, i både timer minutter og sekunder.

Nogen der kan hjælpe?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
<title>Nedtælling til nytårsaften</title>

<script type="text/javascript">

var now = <? echo time(); ?>;
var event = new Date("Jan 01 2005 00:00:01");
var seconds = (event - now) / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
ID=window.setTimeout("update();", 1000);

function update() {
now = new Date();

seconds = (event - now) / 1000;
seconds = Math.round(seconds);

minutes = seconds / 60;
minutes = Math.round(minutes);

hours = minutes / 60;
hours = Math.round(hours);

days = hours / 24;
days = Math.round(days);

document.getElementById('days').value = days;
document.getElementById('hours').value = hours;
document.getElementById('minutes').value = minutes;
document.getElementById('seconds').value = seconds;
ID=window.setTimeout("update();",1000);

str = days + ((days == 1) ? " dag, " : " dage, ") + hours + ((hours == 1) ? " time, " : " timer, ") + minutes + ((minutes == 1) ? " minut, og " : " minutter, og ") + seconds + ((seconds == 1) ? " sekund." : " sekunder.");
document.getElementById("samlet").innerHTML = str;

}

</script>

</head>
<body>

<h1>Nedtælling til nytårsaften</h1>
<p>Der er <input type="text" id="days" value="0" style="width:75px;" /> dage til nytårsaften<br />
Der er <input type="text" id="hours" value="0" style="width:75px;" /> timer til nytårsaften<br />
Der er <input type="text" id="minutes" value="0" style="width:75px;" /> minutter til nytårsaften<br />
Der er <input type="text" id="seconds" value="0" style="width:75px;" /> sekunder til nytårsaften</p>
<br /><br />

Så er der releaseparty om <span id="samlet"></span>

</body>
</html>
Avatar billede Slettet bruger
15. maj 2004 - 11:09 #1
Her er et gammelt script, som jeg havde liggende:

<html>
<head>
<style>
span {
color: red;
}
</style>
<script>
datoned = new Date(2004, 11, 24, 0, 0, 0); //Datoen i fremtiden (her d. 24/12-2004 kl 00:00:00). Månednummeret skal være én mindre

function tael() {
nu = new Date();

//Tæl ned

nt = datoned.getTime() - nu.getTime();
d = Math.ceil(nt / (1000 * 60 * 60 * 24));
t = Math.ceil(nt / (1000 * 60 * 60));
m = Math.ceil(nt / (1000 * 60));
s = Math.ceil(nt / 1000);
sd = Math.floor(nt / (1000 * 60 * 60 * 24));
st = Math.floor((nt % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
sm = Math.floor(((nt % (1000 * 60 * 60 * 24)) % (1000 * 60 * 60)) / (1000 * 60)); //Et uheldigt navn til en variabel...
ss = Math.floor((((nt % (1000 * 60 * 60 * 24)) % (1000 * 60 * 60)) % (1000 * 60)) / 1000); //Et til!
str = sd + ((sd == 1) ? " dag, " : " dage, ") + st + ((st == 1) ? " time, " : " timer, ") + sm + ((sm == 1) ? " minut, og " : " minutter og ") + ss + ((ss == 1) ? " sekund." : " sekunder.");
getObj("samlet").innerHTML = str;

setTimeout("tael();", 1000);
}

function getObj(id) {
if (document.getElementById)
return document.getElementById(id);
if (document.all)
return document.all[id];
}
</script>
</head>
<body onLoad="tael();">
<h3>Tid til d. 24/12-2004</h3>
<br>
<span id="samlet"></span>
</body>
</html>
Avatar billede Slettet bruger
15. maj 2004 - 11:23 #2
Det kender jeg godt, men sagen er at "dags dato" skal hentes med PHP, og det kunne jeg ikke finde ud af i det script du har der :D
Avatar billede Slettet bruger
15. maj 2004 - 12:02 #3
Nådada, jamen det er faktisk ikke så svært endda.

Men det kommer lidt an på, hvilket format du har "dags dato" i. Hvis det bare er et timestamp med antal sekunder efter Unix Epoch, så skal du bare gang dette tal med tusind og udskrive det således:

datoned = new Date(<? echo $tid; ?>);
Avatar billede Slettet bruger
15. maj 2004 - 13:05 #4
Det er det ja, så jeg prøver lige :)
Avatar billede Slettet bruger
15. maj 2004 - 13:07 #5
hmmm...tror vi snakkede forbi hinanden?

Grunden til at jeg vil bruge PHP er at uret ofte går forkert på brugernes maskine, og jeg vil gerne bruge min servers tid som udgangspunkt.

Det må være linien med

nu = new Date();

der skal byttes ud med noget PHP
Avatar billede roenving Novice
15. maj 2004 - 21:04 #6
nu = new Date(<?echo dinServerTid?>);
Avatar billede Slettet bruger
15. maj 2004 - 21:13 #7
roenving> Ummiddelbart ja, men når jeg tester går uret ikke. Det står helt stille :)
Avatar billede roenving Novice
15. maj 2004 - 21:19 #8
Det ser også ud til at der mangler en funktion, som hedder getObj(), så i mangel af bedre, kan du da bruge denne i stedet, som vil klare alle dom-browsere (ie5+ og ns6+/mozilla m.m.fl. !-)

document.getElementById("samlet").innerHTML = str;

setTimeout("tael();", 1000);
}
Avatar billede Slettet bruger
15. maj 2004 - 21:33 #9
Funktionen er skam i scriptet, og scriptet virker fint uden PHP. Det er når jeg vil lave starttiden (fra serveren) om der er problemer. Og det er vel ikke underligt, da denne kun ændres når man refresher siden.
Avatar billede roenving Novice
15. maj 2004 - 21:50 #10
Selvfølgelig !-)

stnu = new Date(<?echo dinServerTid?>);
nu = new Date();
diff = nu.getTime() - stnu.getTime();

function tael() {
nu = new Date(new Date().getTime() + diff);
Avatar billede Slettet bruger
15. maj 2004 - 22:13 #11
weee!

Nu virker det :P

Tak for det, så skal jeg bare have et svar fra dig så er jeg glad
Avatar billede roenving Novice
15. maj 2004 - 22:22 #12
Hov, det skal da være et minus:

nu = new Date(new Date().getTime() - diff);

-- og så kan du jo lige tilføje til din egen funktion:

seconds %= 1000;
minutes %= 60;
days %= 24;

før du skriver str-variablen !-)

-- og velbekomme '-)
Avatar billede Slettet bruger
15. maj 2004 - 22:26 #13
hehe..det virker på samme måde om det er + eller - ...weird!
Avatar billede roenving Novice
15. maj 2004 - 22:33 #14
Den skulle gerne give en forskel på det dobbelte af afstanden, men hvis du tester med en lokal server er der jo intet forkert !-)

-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester