Countdown

Fragen zu HTML, CSS, eigenen Erweiterungen etc.
InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 18.10.2009, 17:39

Könnte man das Script umschreiben das man auch mehrere Countdowns laufen lassen kann?

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Countdown

Ungelesener Beitrag von 1. FC Keller » 18.10.2009, 22:27

Ankündigung:

Code: Alles auswählen

<script language="javascript">function countDown(cdID){var jetztZeit=Date.parse(new Date()); a=parseInt((endZeit-jetztZeit)/1000); min=parseInt(a/60); sec=a%60; min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; document.getElementById("countdown"+cdID).innerHTML=min+":"+sec; if(a>0)setTimeout("countDown("+cdID+")", 100);} </script>
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'" style='position:fixed;right:5px;bottom:5px;'></span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID);</script>

InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 19.10.2009, 00:37

Leider funktioniert das garnicht, ich hab mal was weggelassen und jetzt kann ich zwar 2 Countdowns laufen lassen nur der letzte Countdown den man startet gilt die zeit auch für die davor laufenden Countdowns. Also sieh nehmen immer die zeit von dem letzt eingegeben Countdown an. In der Ankündigung habe ich den oben genanten Teil rein gemacht und nix verändert.

Chatbefehl /count

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"></span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID);</script>

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Countdown

Ungelesener Beitrag von 1. FC Keller » 19.10.2009, 12:41

oh, stimmt... die Zeitvariablen müssen auch übergeben werden damit mehrere unterschiedliche möglich sind.

Ankündigung:

Code: Alles auswählen

<script language="javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); min=parseInt(a/60); sec=a%60; min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; document.getElementById("countdown"+cdID).innerHTML=min+":"+sec; if(a>0)setTimeout("countDown("+cdID+", "+ez+")", 100);} </script>
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"></span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
leider mangels zeit wieder ungetestet... versuchs einfach mal.

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Countdown

Ungelesener Beitrag von Linus » 19.10.2009, 13:18

Kleiner Fehler im Chatbefehl ;) im document.write wurde beim </span> der / nicht escapet. Korrekt müsste es heißen:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"><\/span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
Diese Version funzt, habs getestet^^ Ohne das escapen gehts nicht.

//EDIT: Habe das ganze nun mal so erweitert, das auch Stunden separat angezeigt werden. Dazu muss folgenes in die Ankündigung, der Chatbefehl bleibt gleich:

Code: Alles auswählen

<script language="JavaScript" type="text/javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); h=parseInt(a/3600); min=parseInt((a/60)-60*h);	sec=a%60; h=h<10?("0"+h):h;	min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; document.getElementById("countdown"+cdID).innerHTML=h+":"+min+":"+sec; if(a>0){	setTimeout("countDown("+cdID+", "+ez+")", 100);}}</script>

InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 19.10.2009, 15:41

Suuuper ich danke euch für eure Zeit!

InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 19.10.2009, 18:58

Hehe ich mal wieder :lol: Hab noch ne Idee vieleicht kann man das ja sogar realisieren. Ich hab ein Bild gemacht wie es bei mir jetzt aussieht, Punkt 1. Und zu der Idee ob man die Countdows in der Online-Liste runterzählen könnte, Punkt 2. siehe Bild (könnte ein wenig laden ist eine bmp Datei)

Mein Chatbefehl sieht so aus:

Code: Alles auswählen

<div style="position:fixed; bottom:1px; left:1px; background-color:#D3D3D3">c1 %me%-><script language="javascript">var CountDownID=parseInt(Math.random()*1000); document.write('<span id="countdown'+CountDownID+'"><\/span>'); var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
Ich habe mehre Chatbefehle angelegt was auch nicht schlim ist wie man auf dem Bild sehen kann habe ich vor den Namen die Kennung Chatbefehl gesetzt damit der jenige immer weiß ach mit dem Befehl hab ich den gestartet und kann somit den wieder neu laufen lassen. Zudem habe ich die Position bei den jeweiligen Chatbefehlen geändert damit sieh sich nicht überlappen.

InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 21.10.2009, 18:28

Also ich habe mal mir das mit dem Iframe in der ol angeschaut und ich denke es wäre machbar und habe schon was probiert aber nur mit wenig erfolg. Habe den Ankündigungsteil so gemacht:

Code: Alles auswählen

<script language="JavaScript" type="text/javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); h=parseInt(a/3600); min=parseInt((a/60)-60*h);   sec=a%60; h=h<10?("0"+h):h;   min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; {parent.rightFrame.document.body.innerHTML=h+":"+min+":"+sec+ parent.rightFrame.document.body.innerHTML;}; if(a>0){   setTimeout("countDown("+cdID+", "+ez+")", 100);}}</script>
Der Countdown wird zwar oben über derzeit raum angezeigt und läuft auch runter, nur er wiederholt sich stendig dahinter immer wieder bis die zeit vom Countdown abgelaufen ist.

Sieht so dan aus:
Bild

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Countdown

Ungelesener Beitrag von 1. FC Keller » 21.10.2009, 19:59

man muss schon ein tag in der onlineliste anlegen, dessen inhalt ausgetauscht wird... jedes mal den kompletten HTML-Code des ganzen Frames zu ersetzen hat etliche nachteile, unter anderem dass eventuelle bilder in der onlineliste bei jedem user 10mal in der sekunde neu laden... das zwingt wkhost im Handumdrehen in die Knie.

Code: Alles auswählen

<script language="JavaScript" type="text/javascript">function countDown(cdID, ez){var jetztZeit=Date.parse(new Date()); a=parseInt((ez-jetztZeit)/1000); h=parseInt(a/3600); min=parseInt((a/60)-60*h);   sec=a%60; h=h<10?("0"+h):h;   min=min<10?("0"+min):min; sec=sec<10?("0"+sec):sec; {parent.rightFrame.document.getElementById("countdown"+cdID).innerHTML=h+":"+min+":"+sec}; if(a>0){   setTimeout("countDown("+cdID+", "+ez+")", 100);}else{parent.rightFrame.document.getElementById("countdown"+cdID).style.display="none"}}</script>
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightframe.document.body.innerHTML='<span id="countdown'+CountDownID+'"><\/span>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
ungetestet.

InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 21.10.2009, 20:08

getestet passiert garnix

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Countdown

Ungelesener Beitrag von Linus » 21.10.2009, 22:56

Ähm... Wenn ich mich nicht vergucke gibt es in dem Script kein if, das die { und } (die falsch gesetzt wurden, vor ein ; z.B.) rechtfertigt. Zudem finde ich es ungünstig, das der Countdown ohne Meldung ausgeblendet wird. Der Fehler, das es nicht funktioniert, liegt im Chatbefehl, wo statt rightFrame nur rightframe steht (ist ja case-sensitive). Meine korrigierte Version funktioniert, blendet die Countdowns untereinander ein (div statt span) und erzeugt ein alert, wenn ein Countdown endet. Bleibt noch das Problem, das ein Countdown beim reconnect verschwindet. Es wäre also vielleicht nicht verkehrt, zu prüfen, ob er nach wie vor in der OL steht, oder ihn in den vom reconnect nicht beeinflussten Eingabeframe zu setzen...

Hier erstmal die korrigierte Version (allerdings als JS-Datei)

Code: Alles auswählen

function countDown(cdID, ez){
	var jetztZeit=Date.parse(new Date()); 
	a=parseInt((ez-jetztZeit)/1000); 
	h=parseInt(a/3600); 
	min=parseInt((a/60)-60*h);   
	sec=a%60; 
	h=h<10?("0"+h):h;
	min=min<10?("0"+min):min; 
	sec=sec<10?("0"+sec):sec; 
	parent.rightFrame.document.getElementById("countdown"+cdID).innerHTML=h+":"+min+":"+sec; 
	if(a>0){
		setTimeout("countDown("+cdID+", "+ez+")", 100);
	}else{
		parent.rightFrame.document.getElementById("countdown"+cdID).style.display="none";
		alert("Countdown abgelaufen!");
	}
}
Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightFrame.document.body.innerHTML='<div id="countdown'+CountDownID+'"><\/div>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>

InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 22.10.2009, 00:01

Super das ist der Hammer :D

TauchBlubba
Beiträge: 79
Registriert: 21.10.2007, 19:04
Wohnort: Altenstadt (Mittelhessen)
Kontaktdaten:

Re: Countdown

Ungelesener Beitrag von TauchBlubba » 22.10.2009, 19:30

Huhu, echt cool, eine kleine Änderung würd ich gern vornehmen:

Wenn man eine zweiten Countdown startet, das dieser dann nicht unter dem ersten steht, sondern sich der erste auf die neue Zeit aktualisiert. Ah ich hasse erklären :P

Danke schonmal :D


P.s die Chat befehle sind zu klein :( Kann Webkicks die Zeichenanzahl nicht erhöhen?

InvaderX
Beiträge: 49
Registriert: 21.08.2009, 00:10

Re: Countdown

Ungelesener Beitrag von InvaderX » 22.10.2009, 22:50

Wenn jemand oft einen Countdown in Minuten startet kann er diesen Chatbefehl nutzen. Dann läuft die Zeit ab nach den eingegeben Minuten.

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightFrame.document.body.innerHTML='<div id="countdown'+CountDownID+'"><\/div>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*60*1000);countDown(CountDownID, endZeit);</script>

Benutzeravatar
hamigra
Beiträge: 567
Registriert: 31.08.2006, 16:02
Wohnort: Werdau
Kontaktdaten:

Re: Countdown

Ungelesener Beitrag von hamigra » 23.10.2009, 11:29

Linus hat geschrieben:Chatbefehl:

Code: Alles auswählen

<script language="javascript">var CountDownID=parseInt(Math.random()*1000); parent.rightFrame.document.body.innerHTML='<div id="countdown'+CountDownID+'"><\/div>'+parent.rightFrame.document.body.innerHTML; var endZeit = Date.parse(new Date)+(parseInt(strip_tags('%user%'))*1000);countDown(CountDownID, endZeit);</script>
@Linus
Könnte man eventuell in den Chatbefehl noch einfügen wer ihn nutzen darf?
Irgendwie so... if(myStatus>2), so daß ihn nur Admins nutzen können?

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste