Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Auszeichnungssprachen » JS Countdown - und bei 0? Antworten
JS Countdown - und bei 0?

Lewi
Quasselstrippe


Beiträge: 288


Hi,

ich benutze auf meiner Homepage zur Zeit folgenden JS-Countdown:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66:
function getTime() {
c1 = new Image(); c1.src = "countdown/1c.gif";
c2 = new Image(); c2.src = "countdown/2c.gif";
c3 = new Image(); c3.src = "countdown/3c.gif";
c4 = new Image(); c4.src = "countdown/4c.gif";
c5 = new Image(); c5.src = "countdown/5c.gif";
c6 = new Image(); c6.src = "countdown/6c.gif";
c7 = new Image(); c7.src = "countdown/7c.gif";
c8 = new Image(); c8.src = "countdown/8c.gif";
c9 = new Image(); c9.src = "countdown/9c.gif";
c0 = new Image(); c0.src = "countdown/0c.gif";
Cc = new Image(); Cc.src = "countdown/Cc.gif";
now = new Date();

later = new Date("Aug 18 2004 12:30:01");

days = (later - now) / 1000 / 60 / 60 / 24;
daysRound = Math.floor(days);
hours = (later - now) / 1000 / 60 / 60 - (24 * daysRound);
hoursRound = Math.floor(hours);
minutes = (later - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound);
minutesRound = Math.floor(minutes);
seconds = (later - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound);
secondsRound = Math.round(seconds);

if (secondsRound <= 9) {
document.images.g.src = c0.src;
document.images.h.src = eval("c"+secondsRound+".src");
}
else {
document.images.g.src = eval("c"+Math.floor(secondsRound/10)+".src");
document.images.h.src = eval("c"+(secondsRound%10)+".src");
}
if (minutesRound <= 9) {
document.images.d.src = c0.src;
document.images.e.src = eval("c"+minutesRound+".src");
}
else {
document.images.d.src = eval("c"+Math.floor(minutesRound/10)+".src");
document.images.e.src = eval("c"+(minutesRound%10)+".src");
}
if (hoursRound <= 9) {
document.images.y.src = c0.src;
document.images.z.src = eval("c"+hoursRound+".src");
}
else {
document.images.y.src = eval("c"+Math.floor(hoursRound/10)+".src");
document.images.z.src = eval("c"+(hoursRound%10)+".src");
}
if (daysRound <= 9) {
document.images.x.src = c0.src;
document.images.a.src = c0.src;
document.images.b.src = eval("c"+daysRound+".src");
}
if (daysRound <= 99) {
document.images.x.src = c0.src;
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
if (daysRound <= 999){
document.images.x.src = eval("c"+Math.floor(daysRound/100)+".src");
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
newtime = window.setTimeout("getTime();", 1000);
}


Zur Zeit entsteht, sobald die Zielzeit erreicht ist, ein "Fehler auf der Seite" und der Countdown fängt an, wildes Zeug anzuzeigen. Kann mir jemand sagen, wie ich den genannten Code derart erweitern kann, dass ich für Restzeit = 0 eigenen JavaScript-Code einsetzen kann? Würde mir sehr helfen.

Danke

Lewi


---
Lewi = ehemals the_doc

  Profil   Website   Editieren   Zitieren

sondermuelli
Quasselstrippe


Beiträge: 369


beim aufruf des setTimeout musst du halt vergleichen ob now == later ist. wenn dies der fall ist lässt du das script in einen else-zweig springen.

Edit: der vergleich muss natürlich now <= later sein. und damit du die variablen now und later überhaupt vergleichen kannst schreibst du das am besten so:
1: 
2: 
3: 
4: 
5: 
6: 
7:
if (now.toGMTString() <= later.toGMTString()) {
	newtime = window.setTimeout("getTime();", 1000);
}
else {
	// Der Code der ab Erreichen des Datums ausgeführt werden soll
}


---
wer hilft mir beim geschirr spülen?

Diese Nachricht wurde geändert von: sondermuelli
  Profil   E-Mail   Website   Editieren   Zitieren

Lewi
Quasselstrippe


Beiträge: 288


Prima, danke für die Lösung. Werd es bald ausprobieren.

---
Lewi = ehemals the_doc

  Profil   Website   Editieren   Zitieren

Lewi
Quasselstrippe


Beiträge: 288


Hi,

ich habe den Code jetzt folgendermaßen gestaltet:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73:
function getTime() {
c1 = new Image(); c1.src = "countdown/1c.gif";
c2 = new Image(); c2.src = "countdown/2c.gif";
c3 = new Image(); c3.src = "countdown/3c.gif";
c4 = new Image(); c4.src = "countdown/4c.gif";
c5 = new Image(); c5.src = "countdown/5c.gif";
c6 = new Image(); c6.src = "countdown/6c.gif";
c7 = new Image(); c7.src = "countdown/7c.gif";
c8 = new Image(); c8.src = "countdown/8c.gif";
c9 = new Image(); c9.src = "countdown/9c.gif";
c0 = new Image(); c0.src = "countdown/0c.gif";
Cc = new Image(); Cc.src = "countdown/Cc.gif";
now = new Date();

later = new Date("Aug 19 2004 19:20:01");

if (now.toGMTString() <= later.toGMTString()) {

days = (later - now) / 1000 / 60 / 60 / 24;
daysRound = Math.floor(days);
hours = (later - now) / 1000 / 60 / 60 - (24 * daysRound);
hoursRound = Math.floor(hours);
minutes = (later - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound);
minutesRound = Math.floor(minutes);
seconds = (later - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound);
secondsRound = Math.round(seconds);

if (secondsRound <= 9) {
document.images.g.src = c0.src;
document.images.h.src = eval("c"+secondsRound+".src");
}
else {
document.images.g.src = eval("c"+Math.floor(secondsRound/10)+".src");
document.images.h.src = eval("c"+(secondsRound%10)+".src");
}
if (minutesRound <= 9) {
document.images.d.src = c0.src;
document.images.e.src = eval("c"+minutesRound+".src");
}
else {
document.images.d.src = eval("c"+Math.floor(minutesRound/10)+".src");
document.images.e.src = eval("c"+(minutesRound%10)+".src");
}
if (hoursRound <= 9) {
document.images.y.src = c0.src;
document.images.z.src = eval("c"+hoursRound+".src");
}
else {
document.images.y.src = eval("c"+Math.floor(hoursRound/10)+".src");
document.images.z.src = eval("c"+(hoursRound%10)+".src");
}
if (daysRound <= 9) {
document.images.x.src = c0.src;
document.images.a.src = c0.src;
document.images.b.src = eval("c"+daysRound+".src");
}
if (daysRound <= 99) {
document.images.x.src = c0.src;
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
if (daysRound <= 999){
document.images.x.src = eval("c"+Math.floor(daysRound/100)+".src");
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
newtime = window.setTimeout("getTime();", 1000);
} else {
takeoff();
}

}


Die Funktion takeoff soll ausgeführt werden, wenn die Zeit erreicht ist. Es funktioniert insofern, dass wenn die Seite nach der angegeben Zeit aufgerufen wird, takeoff() aufgerufen wird. Läuft die Zeit allerdings aus, während man sich die Seite anschaut, passiert dies nicht und es gibt einen Syntax-Fehler.

Hast du eine Idee, wie man das noch umgehen könnte?

Gruß

Lewi

---
Lewi = ehemals the_doc

  Profil   Website   Editieren   Zitieren

Lewi
Quasselstrippe


Beiträge: 288


Hi,

habs hinbekommen. In
1:
if (now.toGMTString() <= later.toGMTString()) {
habe ich das "<=" durch "<" ersetzt. Der Countdown hat genau eine Schleife zu viel gemacht und ist dann dadurch ausgestiegen.

Vielen Dank nochmal für die Hilfe.

Gruß

Lewi

---
Lewi = ehemals the_doc

  Profil   Website   Editieren   Zitieren

sondermuelli
Quasselstrippe


Beiträge: 369


habs hinbekommen. In
1:
if (now.toGMTString() <= later.toGMTString()) {
habe ich das "<=" durch "<" ersetzt. Der Countdown hat genau eine Schleife zu viel gemacht und ist dann dadurch ausgestiegen.

hättest du nur die anweisung
1:
newtime = window.setTimeout("getTime();", 1000);
von der if-abfrage abhängig gemacht, hätte es auch mit "<=" funktioniert. aber so wie du es jetzt gelöst hast, ist es ja genauso "richtig".

---
wer hilft mir beim geschirr spülen?

  Profil   E-Mail   Website   Editieren   Zitieren

Lewi
Quasselstrippe


Beiträge: 288


Das hab ich vorher probiert. Sobald aber nur noch 0 Sekunden übrig sind, bleibt er schon im Code vor
1:
newtime = window.setTimeout("getTime();", 1000);
hängen. Aber wie gesagt, jetzt ist alles o.k. Kannst gerne nächste Woche Freitag auf meiner Homepage zuschauen... ;)

---
Lewi = ehemals the_doc

  Profil   Website   Editieren   Zitieren

rushki
Pixelschubser


Beiträge: 1


Hallo,

ich habe den Code mit den paar extra Zeilen angepasst, aber es gibt immer noch ein Scriptfehler, wenn das Datum erreicht worden ist. Was habe ich falsch gemacht?

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86: 
87: 
88: 
89: 
90: 
91: 
92: 
93: 
94: 
95: 
96: 
97: 
98: 
99: 
100: 
101: 
102: 
103: 
104: 
105:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
//Created by DendE PhisH
function getTime() {
c1 = new Image(); c1.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/1c.gif";
c2 = new Image(); c2.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/2c.gif";
c3 = new Image(); c3.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/3c.gif";
c4 = new Image(); c4.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/4c.gif";
c5 = new Image(); c5.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/5c.gif";
c6 = new Image(); c6.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/6c.gif";
c7 = new Image(); c7.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/7c.gif";
c8 = new Image(); c8.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/8c.gif";
c9 = new Image(); c9.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/9c.gif";
c0 = new Image(); c0.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif";
Cc = new Image(); Cc.src = "http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/Cc.gif";
now = new Date();

//ENTER BELOW THE DATE YOU WISH TO COUNTDOWN TO
later = new Date("Nov 24 2004 23:00:00");

days = (later - now) / 1000 / 60 / 60 / 24;
daysRound = Math.floor(days);
hours = (later - now) / 1000 / 60 / 60 - (24 * daysRound);
hoursRound = Math.floor(hours);
minutes = (later - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound);
minutesRound = Math.floor(minutes);
seconds = (later - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound);
secondsRound = Math.round(seconds);

if (secondsRound <= 9) {
document.images.g.src = c0.src;
document.images.h.src = eval("c"+secondsRound+".src");
}
else {
document.images.g.src = eval("c"+Math.floor(secondsRound/10)+".src");
document.images.h.src = eval("c"+(secondsRound%10)+".src");
}
if (minutesRound <= 9) {
document.images.d.src = c0.src;
document.images.e.src = eval("c"+minutesRound+".src");
}
else {
document.images.d.src = eval("c"+Math.floor(minutesRound/10)+".src");
document.images.e.src = eval("c"+(minutesRound%10)+".src");
}
if (hoursRound <= 9) {
document.images.y.src = c0.src;
document.images.z.src = eval("c"+hoursRound+".src");
}
else {
document.images.y.src = eval("c"+Math.floor(hoursRound/10)+".src");
document.images.z.src = eval("c"+(hoursRound%10)+".src");
}
if (daysRound <= 9) {
document.images.x.src = c0.src;
document.images.a.src = c0.src;
document.images.b.src = eval("c"+daysRound+".src");
}
if (daysRound <= 99) {
document.images.x.src = c0.src;
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
if (daysRound <= 999){
document.images.x.src = eval("c"+Math.floor(daysRound/100)+".src");
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
if (now.toGMTString() <= later.toGMTString()) {
newtime = window.setTimeout("getTime();", 1000);
}
else {
	// Der Code der ab Erreichen des Datums ausgeführt werden soll
}
//  End -->
</script>
</HEAD>
<BODY><BODY onLoad="getTime()">
<div align="center">
<h3>Countdown zum Release von Die Siedler: Das Erbe der Könige</h3>
</div>

<center>
<table><tr><td bgcolor="black" valign="bottom">
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=x>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=a>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=b><font color="#FFFFFF">Tag(e)</font>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/Cc.gif" width=9 name=c>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=y>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=z><font color="#FFFFFF">Stunde(n)</font>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/Cc.gif" width=9 name=cz>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=d>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=e><font color="#FFFFFF">Minute(n)</font>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/Cc.gif" width=9 name=f>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=g>
<img height=21 src="http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/0c.gif" width=16 name=h><font color="#FFFFFF">Sekunde(n)</font>
</td></tr></table>
</center>



	</BODY>
</HTML>



  Profil   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 118


1: 
2: 
3: 
4: 
5:
Error: missing } after function body
Source File: http://192.168.0.1/~philipp/rushki.htm
Line: 78, Column: 11
Source Code:
//  End -->


Nach Korrektur und Herunterlaufenlassen des Zählers kam das hier:
1: 
2: 
3: 
4: 
5:
Error: missing ; before statement
Source File: http://192.168.0.1/~philipp/rushki.htm
Line: 59, Column: 4
Source Code:
c-1.src


Dann habe ich mir den Quelltext mal genauer angesehen. Geschickter kannst Du die Zuweisung mit einen Array von Image-Objekten anstellen. Dann wird einfach der Array-Index übergeben und Du kannst Dir den Umstand mit eval() sparen:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12:
var imgarr = new Array(10);
for (var i = 0; i < 10; i++)
{
   imgarr[i] = new Image();
   imgarr[i].src = '~/' + i + '.gif';
}

...

document.images.h.src = imgarr[secondsRound].src;

Diese Variable sollte global definiert sein, nicht lokal, damit sie nicht jedes Mal neu geschrieben werden muss.

Du solltest am Anfang der Funktion prüfen, ob der Zeitpunkt erreicht oder gar überschritten wurde, damit keine Fehler mehr auftreten, weil eval() "c-1" berechnen will oder der Arrayindex zu klein wird (je nach Variante).

Ist Dir ein Körper nicht genug?

setInterval()

  Profil   E-Mail   Website   Editieren   Zitieren

Chris007
Pixelschubser


Beiträge: 1


Hi, ich hab noch nich so viel Ahnung von JS und hab das gleiche Prob wie Lewi, mit den Unterschied das es bei ihm klappt *g*

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76:
<SCRIPT LANGUAGE="JavaScript">

function getTime() {
c1 = new Image(); c1.src = "1c.gif";
c2 = new Image(); c2.src = "2c.gif";
c3 = new Image(); c3.src = "3c.gif";
c4 = new Image(); c4.src = "4c.gif";
c5 = new Image(); c5.src = "5c.gif";
c6 = new Image(); c6.src = "6c.gif";
c7 = new Image(); c7.src = "7c.gif";
c8 = new Image(); c8.src = "8c.gif";
c9 = new Image(); c9.src = "9c.gif";
c0 = new Image(); c0.src = "0c.gif";
Cc = new Image(); Cc.src = "Cc.gif";
now = new Date();

later = new Date("Jan 1 2005 00:00:01");

if (now.toGMTString() < later.toGMTString()) {

days = (later - now) / 1000 / 60 / 60 / 24;
daysRound = Math.floor(days);
hours = (later - now) / 1000 / 60 / 60 - (24 * daysRound);
hoursRound = Math.floor(hours);
minutes = (later - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound);
minutesRound = Math.floor(minutes);
seconds = (later - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound);
secondsRound = Math.round(seconds);

if (secondsRound <= 9) {
document.images.g.src = c0.src;
document.images.h.src = eval("c"+secondsRound+".src");
}
else {
document.images.g.src = eval("c"+Math.floor(secondsRound/10)+".src");
document.images.h.src = eval("c"+(secondsRound%10)+".src");
}
if (minutesRound <= 9) {
document.images.d.src = c0.src;
document.images.e.src = eval("c"+minutesRound+".src");
}
else {
document.images.d.src = eval("c"+Math.floor(minutesRound/10)+".src");
document.images.e.src = eval("c"+(minutesRound%10)+".src");
}
if (hoursRound <= 9) {
document.images.y.src = c0.src;
document.images.z.src = eval("c"+hoursRound+".src");
}
else {
document.images.y.src = eval("c"+Math.floor(hoursRound/10)+".src");
document.images.z.src = eval("c"+(hoursRound%10)+".src");
}
if (daysRound <= 9) {
document.images.x.src = c0.src;
document.images.a.src = c0.src;
document.images.b.src = eval("c"+daysRound+".src");
}
if (daysRound <= 99) {
document.images.x.src = c0.src;
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
if (daysRound <= 999){
document.images.x.src = eval("c"+Math.floor(daysRound/100)+".src");
document.images.a.src = eval("c"+Math.floor((daysRound/10)%10)+".src");
document.images.b.src = eval("c"+Math.floor(daysRound%10)+".src");
}
newtime = window.setTimeout("getTime();", 1000);
} else {
takeoff();
}

}

</script>

So sieht bei mir der Code aus, aber der fängt nich an zu Zählen

  Profil   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 118


onload.
1:
<body onload="laufend = setInterval('timer();', 1000);">


DendE PhisH stinkt... wirklich. So geht es richtig:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39:
<script type="text/javascript">
var dann = new Date('Jan 1 2005 00:00:01');
var laufend;
var faktarr = new Array(10, 10, 2.4, 10, 6, 10, 6, 10); // Faktoren, aus denen faktor zusammengesetzt ist.

// Bilder-Array deklarieren und füllen
var imgarr = new Array(); // enthält die Ziffernbilder
for (var i = 0; i < 10; i++)
{
 imgarr[i] = new Image();
 imgarr[i].src = 'http://mitglied.lycos.de/rushki1983/Div.%20Datein/Siedler_DEdK_Countdown/' + i + 'c.gif'; // über die Dateinamen würde ich mir nochmal Gedanken machen
}

function timer()
// Sinnvollerweise sollten keine bereits vergebenen Funktionsnamen verwendet werden...
{
 var jetzt = new Date();
 if (jetzt > dann) // der direkte Vergleich ist auch möglich.. sogar schneller.
 { // aufhören
  clearInterval(laufend);
  return;
 }

 // Ansonsten: Uhr aktualisieren.. und zwar geschickter.
 var diff = (dann - jetzt) / 1000; // Millisekunden braucht niemand.
 var faktor =  8640000; // Faktor, dessen Vielfaches die nächste Ziffer ist.
 document.getElementById('z1').src = imgarr[Math.floor(diff / faktor)].src; // Bild zuweisen.

 for (var i = 2; i < 10; i++) // für jede weitere Ziffer
 {
  diff = diff % faktor; // Differenz um die eben geänderte Ziffer eindampfen
  faktor = faktor / faktarr[i - 2]; // den Faktor für die nächste Ziffer verkleinern
  document.getElementById('z' + i).src = imgarr[Math.floor(diff / faktor)].src; // und zuweisen
 }

 if (jetzt == dann)
  takeoff();
}
</script>
Der Code ist kommentiert... Ansonsten ist es einfache Mathematik.

Die Ziffern-<img>s brauchen jetzt die ids "z1" bis "z9", z1 ist die Hunderterstelle der Tage, z9 die Einerstelle der Sekunden. (Nicht die Doppelpunke mit id versehen!)
Namen sind nicht mehr nötig.

Funktionierendes Beispiel: rushki.htm (solange mein Rechner läuft).

Diese Nachricht wurde geändert von: Ori
  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben