Avatar billede pcgrsh Nybegynder
21. juni 2000 - 23:11 Der er 8 kommentarer og
1 løsning

En optæller (det modsatte af en nedtæller)

Jeg søger et JavaScript der tæller op fra et bestemt tidspunkt.

F.eks:
Jeg er født d. 9. februar 1989 kl. 14.02.00, og er derfor nu X år, X dage, X timer, X minutter og X sekunder.

Javascriptet skal finde ud af hvad X er. Scriptet skal være nogenlunde nemt at komme til, så jeg selv kan ændre datoen.

Javascriptet skal både være kompatibelt med IE 4.x og nyere, samt Nertscape 4.x og nyere.
Avatar billede moses Praktikant
22. juni 2000 - 07:57 #1
Sådan skulle det virke :
<html>
<head>
<TITLE>Tid</TITLE>

<script language="JavaScript">
<!--
function CountDown(){
var nu = new Date();
var Engang = new Date(2000,05,21,08,00,00,00);
// Husk at januar=0, februar=1 osv.

var S = Engang.getTime() - nu.getTime();

if (S<0) {
  S=-S;
}

var T = Math.floor(S / (60*60*1000));
S = S - (T * (60*60*1000));
var M = Math.floor(S / (60*1000));
S = S - (M * (60*1000));
var Se = Math.floor(S/1000);
S = S - (Se * 1000);
var Ms = Math.floor(S / 10);

document.Da1.src = parseInt(Math.floor(T/2400),10)+'.gif';
document.Da2.src = parseInt(Math.floor(((T/2400) - Math.floor(T/2400))*10),10)+'.gif';
document.Da3.src = parseInt(Math.floor(((T/240) - Math.floor(T/240))*10),10)+'.gif';

document.Ti1.src = parseInt(Math.floor(((T/24) - Math.floor(T/24))*24/10),10)+'.gif';
document.Ti2.src = parseInt(Math.floor(((T/24) - Math.floor(T/24))*24,1) - Math.floor(((T/24) - Math.floor(T/24))*24/10)*10,10)+'.gif';

document.Mi1.src = parseInt(Math.floor(M/10),10)+'.gif';
document.Mi2.src = parseInt(((M/10) - Math.floor(M/10))*10,10)+'.gif';
document.Se1.src = parseInt(Math.floor(Se/10),10)+'.gif';
document.Se2.src = parseInt(((Se/10) - Math.floor(Se/10))*10,10)+'.gif';
document.Ms1.src = parseInt(Math.floor(Ms/10),10)+'.gif';
document.Ms2.src = parseInt(((Ms/10) - Math.floor(Ms/10))*10,10)+'.gif';
setTimeout ("CountDown()", 1);
}
// -->
</script>

<script language="JavaScript">
<!--
function Init(){
setTimeout ("CountDown()", 1)
}
// -->
</script>

</head>

<body onLoad="Init()">

<br>
Tid til sommerferien 2000.<BR>
<BR>
<img name="Da1" src="1.gif"><img name="Da2" src="2.gif"><img name="Da3" src="9.gif"> Days <img name="Ti1" src="1.gif"><img name="Ti2" src="2.gif"> Hours <img name="Mi1" src="3.gif"><img name="Mi2" src="4.gif"> minuttes <img name="Se1" src="5.gif"><img name="Se2" src="6.gif"> Seconds <img name="Ms1" src="7.gif"><img name="Ms2" src="8.gif"> milliseconds
</body>
</html>

Avatar billede moses Praktikant
22. juni 2000 - 07:58 #2
0.gif - 9.gif indeholder så selvfølgelig tallene 0 - 9.
Avatar billede moses Praktikant
22. juni 2000 - 08:00 #3
Du skal ikke tage dig af, at der står "Tid til sommerferien 2000."

Jeg har brugt denne rutine til opmuntring ved at have den kørende i baggrunden !!
Avatar billede pcgrsh Nybegynder
22. juni 2000 - 11:08 #4
--> Moses

Jeg kan ikke bruge dit script, da det jeg skal bruge skal være tekstbaseret - så tager det ikke så lang tid at indlæse. I øvrigt behøver der ikke at være milisekunder med. Til gengæld skal der være år med, og det manglede i dit script.

Scriptets udgangstidspunkt skal være d. 9. februar 1989 kl. 14.02.00, og scriptet skal regne ud hvor mange år, dage, timer, minutter og sekunder det er siden.
Avatar billede moses Praktikant
22. juni 2000 - 13:42 #5
SÅ den her da !!

<html>
<head>
<TITLE>Tid</TITLE>

<script language="JavaScript">
<!--
function calcYear(MyYear){
if (MyYear<100) {
  return MyYear + 1900
}
else
  return MyYear
}
// -->
</script>

<script language="JavaScript">
<!--
function CountDown(){
var nu = new Date();

// HER KAN DU SÆTTE EN REFERENCEDATO !!!!!!!!!!!
var Engang = new Date(1989,01,09,14,02,00,00);
// Husk at januar=0, februar=1 osv.

document.myform.Since.value = Engang.toLocaleString();

YearDiff = calcYear(Engang.getYear()) - calcYear(nu.getYear());

if (YearDiff<0) {
  YearDiff=-YearDiff;
}

// Fraregner årene
Engang.setYear(nu.getYear());

var S = Engang.getTime() - nu.getTime();

if (S<0) {
  S=-S;
}

var T = Math.floor(S / (60*60*1000));
S = S - (T * (60*60*1000));
var M = Math.floor(S / (60*1000));
S = S - (M * (60*1000));
var Se = Math.floor(S/1000);
S = S - (Se * 1000);
var Ms = Math.floor(S / 10);

TXT = "";

// Årene

TXT = TXT + YearDiff + ' år ';

// Dagene
TXT = TXT + parseInt(Math.floor(T/2400),10);
TXT = TXT + parseInt(Math.floor(((T/2400) - Math.floor(T/2400))*10),10);
TXT = TXT + parseInt(Math.floor(((T/240) - Math.floor(T/240))*10),10) + ' dage ';

// Timerne
TXT = TXT + parseInt(Math.floor(((T/24) - Math.floor(T/24))*24/10),10);
TXT = TXT + parseInt(Math.floor(((T/24) - Math.floor(T/24))*24,1) - Math.floor(((T/24) - Math.floor(T/24))*24/10)*10,10) + ' timer ';

// Minutterne
TXT = TXT + parseInt(Math.floor(M/10),10);
TXT = TXT + parseInt(((M/10) - Math.floor(M/10))*10,10) + ' min ';

// Sekunderne
TXT = TXT + parseInt(Math.floor(Se/10),10);
TXT = TXT + parseInt(((Se/10) - Math.floor(Se/10))*10,10) + ' sek ';

document.myform.mytext.value = TXT
setTimeout ("CountDown()", 1)
}
// -->
</script>

<script language="JavaScript">
<!--
function Init(){
setTimeout ("CountDown()", 1)
}
// -->
</script>

</head>

<body onLoad="Init()">



<br>
<BR>
<BR>
<FORM NAME="myform">
Tid indtil/siden <INPUT TYPE="text" NAME="Since" SIZE="20"> : <INPUT TYPE="text" NAME="mytext" SIZE="40">
</FORM>
</body>
</html>
Avatar billede pcgrsh Nybegynder
22. juni 2000 - 21:04 #6
--> Tak for hjælpen!
Avatar billede moses Praktikant
23. juni 2000 - 07:54 #7
væsgo'
Avatar billede moses Praktikant
23. juni 2000 - 15:04 #8
Når jeg nu har givet dig koden, så skal du da også have den korrekte !?!?
Den forrige regner ikke årstallet korrekt ud både forlæns og baglæns. Det gør denne her til gengæld:

<html>
<head>
<TITLE>Tid</TITLE>


<script language="JavaScript">
<!--
function calcYear(MyYear) {
if (MyYear<100) {return MyYear + 1900} else {return MyYear}
}
// -->
</script>


<script language="JavaScript">
<!--
function CountDown() {
var nu = new Date();
var True = -1;
var False = 0;

// HER KAN DU SÆTTE EN REFERENCEDATO !!!!!!!!!!!
var Engang = new Date(1999,05,23,15,00,00,00);
// Husk at januar=0, februar=1 osv.

// Første step til beregning af årene
var YearDiff = calcYear(Engang.getYear()) - calcYear(nu.getYear());
if (YearDiff<0) {YearDiff=-YearDiff}

// Andet step til beregning af årene
var S = Engang.getTime() - nu.getTime();
if (S<0) {
  S=-S;
  var Fremtid = False;
  var TempEngang = new Date();
  TempEngang.setTime(Engang.getTime());
  TempEngang.setYear(nu.getYear());
  if (TempEngang > nu) {YearDiff = YearDiff - 1}
}
else {
  var Fremtid = True;
  var TempEngang = new Date();
  TempEngang.setTime(Engang.getTime());
  TempEngang.setYear(nu.getYear());
  if (TempEngang < nu) {YearDiff = YearDiff - 1}
}

//Fraregning af årene
if (Fremtid == True) {nu.setYear(calcYear(nu.getYear())+YearDiff)} else {nu.setYear(calcYear(nu.getYear())-YearDiff)}

//Beregn differencen modulus 1 år
if (Fremtid == True) {var S = Engang.getTime() - nu.getTime()} else {var S = nu.getTime() - Engang.getTime()}

var D =  Math.floor(S / (24*60*60*1000));
S = S - (D * (24*60*60*1000));
var T = Math.floor(S / (60*60*1000));
S = S - (T * (60*60*1000));
var M = Math.floor(S / (60*1000));
S = S - (M * (60*1000));
var Se = Math.floor(S/1000);
S = S - (Se * 1000);
var Ms = Math.floor(S / 10);

// Årene
if (Fremtid == True) {var TXT = ' Tid indtil  ' + Engang.toLocaleString() + ':    '} else {var TXT = ' Tid siden  ' + Engang.toLocaleString() + ':    '}
TXT = TXT + YearDiff + ' år ';

// Dagene
kontrol = parseInt(Math.floor(D/100),10);
if (kontrol>0) {TXT = TXT + kontrol}
kontrol = parseInt(Math.floor(((D/100) - Math.floor(D/100))*10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt(Math.floor(((D/10) - Math.floor(D/10))*10),10) + ' dage ';

// Timerne
kontrol = parseInt(Math.floor(T/10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt(((T/10) - Math.floor(T/10))*10,10) + ' timer ';

// Minutterne
kontrol = parseInt(Math.floor(M/10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt(((M/10) - Math.floor(M/10))*10,10) + ' min ';

// Sekunderne
kontrol = parseInt(Math.floor(Se/10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt(((Se/10) - Math.floor(Se/10))*10,10) + ' sek ';

document.myform.mytext.value = TXT;
setTimeout ("CountDown()", 1)
}
// -->
</script>

<script language="JavaScript">
<!--
function Init(){
setTimeout ("CountDown()", 1)
}
// -->
</script>

</head>

<body onLoad="Init()">
<BR>
<FORM NAME="myform">
<INPUT TYPE="text" NAME="mytext" SIZE="60">
</FORM>
</body>
</html>
Avatar billede moses Praktikant
23. juni 2000 - 15:54 #9
Så skal det altså også være slut !!!!!
Udgave nr. 2 havde for voldsomme afrundingsfejl.
Sidste huk  ;o)

<html>
<head>
<TITLE>Tid</TITLE>


<script language="JavaScript">
<!--
function calcYear(MyYear) {
if (MyYear<100) {return MyYear + 1900} else {return MyYear}
}
// -->
</script>


<script language="JavaScript">
<!--
function CountDown() {
var nu = new Date();
var True = -1;
var False = 0;

// HER KAN DU SÆTTE EN REFERENCEDATO !!!!!!!!!!!
var Engang = new Date(2000,05,24,16,00,00,00);
// Husk at januar=0, februar=1 osv.

// Første step til beregning af årene
var YearDiff = calcYear(Engang.getYear()) - calcYear(nu.getYear());
if (YearDiff<0) {YearDiff=-YearDiff}

// Andet step til beregning af årene
var S = Engang.getTime() - nu.getTime();
if (S<0) {
  S=-S;
  var Fremtid = False;
  var TempEngang = new Date();
  TempEngang.setTime(Engang.getTime());
  TempEngang.setYear(nu.getYear());
  if (TempEngang > nu) {YearDiff = YearDiff - 1}
}
else {
  var Fremtid = True;
  var TempEngang = new Date();
  TempEngang.setTime(Engang.getTime());
  TempEngang.setYear(nu.getYear());
  if (TempEngang < nu) {YearDiff = YearDiff - 1}
}

//Fraregning af årene
if (Fremtid == True) {nu.setYear(calcYear(nu.getYear())+YearDiff)} else {nu.setYear(calcYear(nu.getYear())-YearDiff)}

//Beregn rest under 1 år
if (Fremtid == True) {var S = Engang.getTime() - nu.getTime()} else {var S = nu.getTime() - Engang.getTime()}

var D =  Math.floor(S / (24*60*60*1000));
S = S - (D * (24*60*60*1000));
var T = Math.floor(S / (60*60*1000));
S = S - (T * (60*60*1000));
var M = Math.floor(S / (60*1000));
S = S - (M * (60*1000));
var Se = Math.floor(S/1000);
S = S - (Se * 1000);
var Ms = Math.floor(S / 10);

// Årene
if (Fremtid == True) {var TXT = ' Tid indtil  ' + Engang.toLocaleString() + ':    '} else {var TXT = ' Tid siden  ' + Engang.toLocaleString() + ':    '}
TXT = TXT + YearDiff + ' år ';

// Dagene
kontrol = parseInt(Math.floor(D/100),10);
if (kontrol>0) {TXT = TXT + kontrol}
kontrol = parseInt(Math.floor((D - Math.floor(D/100)*100)/10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt(Math.floor((D - Math.floor(D/10)*10)),10) + ' dage ';

// Timerne
kontrol = parseInt(Math.floor(T/10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt((T - Math.floor(T/10)*10),10) + ' timer ';

// Minutterne
kontrol = parseInt(Math.floor(M/10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt((M - Math.floor(M/10)*10),10) + ' min ';

// Sekunderne
kontrol = parseInt(Math.floor(Se/10),10);
if (kontrol>0) {TXT = TXT + kontrol}
TXT = TXT + parseInt((Se - Math.floor(Se/10)*10),10) + ' sek ';

document.myform.mytext.value = TXT;
setTimeout ("CountDown()", 1)
}
// -->
</script>

<script language="JavaScript">
<!--
function Init(){
setTimeout ("CountDown()", 1)
}
// -->
</script>

</head>

<body onLoad="Init()">
<BR>
<FORM NAME="myform">
<INPUT TYPE="text" NAME="mytext" SIZE="60">
</FORM>
</body>
</html>
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