Countdown Zähler in min. und sek.

Subwoover

Erfahrenes Mitglied
Hey ihr!

Bin sehr unerfahren in JS und suche eine möglichkeit einen cowndown zu zählen...
es soll dabei die minuten- und sekundenanzahl angezeigt werden die noch verbleiben bis zu einem aus eriner sql-DB ausgelesenen zeit. (php)

ich möchte aber auch dass wenn die eine minute um ist, der sek. timer auf 00 springt und der minutentimer eine nummer kleiner, eh klar :)
wenns geht wärs super wenn das ganze auch ohne input feldern geht...

kann mir da wer auf die sprünge helfen?!
 
Das Skript:
Code:
<script type="text/javascript">
<!--
ende=1070827824;
iHTML=false;
function printCounter()
{
out='<form name="fCD"><input type="text"size="7"name="CD"></form>';
if(document.getElementsByTagName&&document.getElementsByTagName('script')[0].innerHTML)
	{iHTML=true;
	out='<span id="CD">f&nbsp</span>';
	}
return out;
}
function countDown()
{
out='0:00';
now=new Date();now=parseInt(now.getTime()/1000);
if(now<ende)
	{
	out=parseInt((ende-now)/60)+':';
	sek=(ende-now)%60;
	if(sek<10){out+='0';}
	out+=sek;
	}
if(iHTML){document.getElementById('CD').innerHTML=out;}
else{document.fCD.CD.value=out;}
if(now<ende){setTimeout("countDown()",1000);}
}
window.onload=countDown;
//-->
</script>
Der Timestamp aus der DB kommt bei "ende" hin.
Die Sache läuft ohne <input> bei IE5+,Opera7+,Netscape7+,Mozilla.
Bei den anderen gehts nicht ohne :(

Dort in der Seite, wo der Countdown erscheinen soll, noch folgendes hinein:
Code:
<script type="text/javascript">
<!--
document.write(printCounter());
//-->
</script>
 
Frage

Also ich habe das nun so gemacht.
Code:
<?

$ghaben = mysql_query("SELECT * FROM startsperre WHERE kid='$_SESSION[user]'");
while($dbdata = mysql_fetch_array($ghaben)) {
$neuesende = $dbdata[time] + 2700 ;
?>

<script type="text/javascript">
<!--
ende=<? echo"$neuesende"; ?>;
iHTML=false;
function printCounter()
{
out='<form name="fCD"><input type="text"size="7"name="CD"></form>';
if(document.getElementsByTagName&&document.getElementsByTagName('script')[0].innerHTML)
	{iHTML=true;
	out='<span id="CD">f </span>';
	}
return out;
}
function countDown()
{
out='OK';
now=new Date();now=parseInt(now.getTime()/1000);
if(now<ende)
	{
	out=parseInt((ende-now)/60)+':';
	sek=(ende-now)%60;
	if(sek<10){out+='0';}
	out+=sek;
	}
if(iHTML){document.getElementById('CD').innerHTML=out;}
else{document.fCD.CD.value=out;}
if(now<ende){setTimeout("countDown()",1000);}
}
window.onload=countDown;
//-->
</script>
<script type="text/javascript">
<!--
document.write(printCounter());
//-->
</script>
<?
}
?>

Wie kann ích das Ändern damit ich die Anzeige nicht in einem FormFeld habe?
Aufgrund meines Design nimmt das Feld leider die HintergrundFarbe des Designs mit an, Das soll es aber nicht
 
Das kommt auf den Browser an... versteht er innerHTML, dann wird das als normaler Text angezeigt, wenn nicht, dann in einem Formularfeld. Was benutzt du denn für einen Browser

Es sollte eigentlich bei IE5+,Mozilla,Netscape7 und Opera7 ohne Formularfeld daherkommen.

Ich seh grad, dass der Opera da nen kleines Problem hat....
Ersetze mal in function printCounter() in der Zeile:
Code:
if(document.getElementsByTagName&&document.getElementsByTagName('script')[0].innerHTML)
...das fette "script" durch "title".
Das ganze Skriptzeugs muss dann im Quelltext hinter dem <title>-Tag stehen.(vielleicht lags ja bei dir auch daran).
Ansonsten kannst du dem Textfeld auch eine andere Farbe geben, die entsprechende Stelle sollte nicht schwer zu finden sein:)

Mal was anderes... sehe ich das richtig, dass, wenn dein DB-Query mehr als ein Datensatz liefert, auch die ganzen Skripte mehrmals in die Seite geschrieben werden sollen.... zumindest ist dies jetzt der Fall:rolleyes:
...Das wird so nicht funktionieren...
 
Doch

Doch die DB Query gibt exakt 1 Ergebnis aus.
Da ich in der Where Klauser nach einer Session Variable suche die nur einmal vergeben wird!
Dadurch ist die Gefahr nicht vorhanden das mehr als 1 Ergebnis ausgegeben wird.

Wäre auch schlimm dann würde mein ganzes Projekt nicht mehr Funktionieren :)

Danke für die Lösung. Es hat Geklappt mit dem script ersetzten durch title.
Schon ist es in keinem FormFeld mehr.

Danke dir
 
Zuletzt bearbeitet:
Re: Frage

Hallo,

Ich hab mir dein Skript auch mal angeschaut und will es weiterverwenden.
Kann man dann auch, wenn die zeit auf 0 abgelaufen ist etwas ausführen lasse?
bei mir soll dann nämlich ein mysql_query ausgeführt werden.

mb fanste

PS: bin noch sehr unerfahren mit Javascript :D
 
Re: Frage

Sicher kannst du da etwas ausführen lassen.... passiert dort ja auch, wenn du genau hinschaust.
Allerdings keine PHP-Funktionen.

Wenn du ein mysql_query() initialisieren willst, stehen die diese Varianten zur Verfügung.
 

Neue Beiträge

Zurück