Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Frage zu Java Countdown





Frage

Hallo, ich hab auf meiner Website einen Countdown eingebunden (im Internet gefunden) und diesen auf meine bedürfnisse, soweit ich es verstanden habe bzw. hin bekommen habe verändert. Doch jetzt steht am Anfang des Countdows eine 0! Wie bekomme ich diese weg? script language="JavaScript"> // Ziel-Datum in MEZ var jahr=2007, monat=9, tag=22, stunde=20, minute=00, sekunde=00; var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde); function countdown() { startDatum=new Date(); // Aktuelles Datum // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist if(startDatum<zielDatum) { var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0; // Tage while(startDatum.getTime()+(24*60*60*1000)<zielDatum) { tage++; startDatum.setTime(startDatum.getTime()+(24*60*60*1000)); } // Stunden stunden=Math.floor((zielDatum-startDatum)/(60*60*1000)); startDatum.setTime(startDatum.getTime()+stunden*60*60*1000); // Minuten minuten=Math.floor((zielDatum-startDatum)/(60*1000)); startDatum.setTime(startDatum.getTime()+minuten*60*1000); // Sekunden sekunden=Math.floor((zielDatum-startDatum)/1000); // Anzeige formatieren (tage!=1)?tage=tage+" Tage, ":tage=tage+" Tage, "; (stunden!=1)?stunden=stunden+" Stun, ":stunden=stunden+" Stun, "; (minuten!=1)?minuten=minuten+" Min ":minuten=minuten+" Min "; if(sekunden<10) sekunden="0"+sekunden; (sekunden!=1)?sekunden=sekunden+" Sek":sekunden=sekunden+" Sek"; document.countdownform.countdowninput.value= jahre+monate+tage+stunden+minuten+sekunden; setTimeout('countdown()',200); } // Anderenfalls alles auf Null setzen else document.countdownform.countdowninput.value= "Nächster Termin in kürze hier..."; } </script> Die zweite Sache bezieht sich auf die Form wo es eingebunden ist, wie kann ich dort den Hintergrund verändern? Also die Farbe. <input size="28" name="countdowninput"/> Ich hoffe ihr könnt mir helfen, danke schön!

Antwort 1 von rfb

zeig bitte den Code mal im Zusammenhang (komplette Seite) oder gib einen Link zur Seite an.

Antwort 2 von rfb

zur Doppel-0-Frage:

Du setzt
jahre
und
monate
auf
0
, dann addierst du in der Ausgabezeile
 jahre+monate
, das ergibt auch wieder
0
. Beide Variablen werden in deiner Funktion nicht verarbeitet.
tage
steht ebenfalls auf
0
, dann soll in déiner Schleife irgendwie gezählt werde (
while (irgendeine Bedingung) tage++
), aber wahrscheinlich ist diese Bedingung nie erfüllt also bleibt der Wert
0
.
Dann addierst du dazu den String
" Tage"
und machst aus der Zahl
tage
damit eine Stringvariable. Wenn du die zu
 jahre+monate 
addierst - du erinnerst dich, das ist
0
- wird auch das zu einem String, und zwar zu
"00 Tage"
.

Der Countdown ist damit total verkorkst. Schmeiß ihn auf den Müll.

Zur Hintergrundfrage:

dafür gibts die CSS-Eigenschaft background-color

Antwort 3 von Dörk

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
<link rel="stylesheet" type="text/css"
href="style.css" />
<script language="JavaScript">
// Ziel-Datum in MEZ
var jahr=2007, monat=9, tag=22, stunde=20, minute=00, sekunde=00;
var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
function countdown() {
startDatum=new Date(); // Aktuelles Datum
// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
if(startDatum<zielDatum) {
var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;
// Tage
while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
tage++;
startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
}
// Stunden
stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);
// Minuten
minuten=Math.floor((zielDatum-startDatum)/(60*1000));
startDatum.setTime(startDatum.getTime()+minuten*60*1000);
// Sekunden
sekunden=Math.floor((zielDatum-startDatum)/1000);
// Anzeige formatieren
(tage!=1)?tage=tage+" Tage, ":tage=tage+" Tage, ";
(stunden!=1)?stunden=stunden+" Stun, ":stunden=stunden+" Stun, ";
(minuten!=1)?minuten=minuten+" Min ":minuten=minuten+" Min ";
if(sekunden<10) sekunden="0"+sekunden;
(sekunden!=1)?sekunden=sekunden+" Sek":sekunden=sekunden+" Sek";
document.countdownform.countdowninput.value=
jahre+monate+tage+stunden+minuten+sekunden;
setTimeout('countdown()',200);
}
// Anderenfalls alles auf Null setzen
else document.countdownform.countdowninput.value=
"Nächster Termin in kürze hier...";
}
</script>
</head>
<body onload="countdown()">
<div align="center"><img src="design/gruppenbild.jpg"
alt="Gruppe" />
<form name="countdownform">N&auml;chste Kegeln:
<p><input size="28" name="countdowninput"
bgcolor="#0b2030" /></p>
</form>
</div>
</body>
</html>




Das ist der Aufbau der Seite! Könnt euch ja mal anschauen! Hoffe ihr könnt mir dann helfen!

Antwort 4 von rfb

Lies einfach Antwort 2!

Antwort 5 von rfb

oder ersetze dein Fossil durch ein moderneres Script wie dieses:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Kegeln</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript">
function kegeln(jahr,monat,tag,stunde,minute) {
var zielDatum = (new Date(jahr,monat-1,tag,stunde,minute,0)).getTime();
var startDatum = (new Date()).getTime();
var Sekunden = Math.floor((zielDatum-startDatum)/1000)
var Tage = Math.floor(Sekunden/86400);
Sekunden -= Tage*86400;
var Stunden = Math.floor(Sekunden/3600);
Sekunden -= Stunden*3600;
var Minuten = Math.floor(Sekunden/60);
Sekunden -= Minuten*60;
var ausgabe = document.getElementById("countdowninput");
if (ausgabe) ausgabe.firstChild.data = Tage+" Tage, "+Stunden+" Stunden, "+Minuten+" Minuten, "+Sekunden+" Sec";
}
window.onload=function() {
var uhr=setInterval("kegeln(2007,8,15,11,15)",1000);
}
</script>
</head>
<body>
<div><img src="design/gruppenbild.jpg" alt="Gruppe" />
<p>nächstes Kegeln in <span id="countdowninput">Kürze hier</span>.</p>
</div>
</body>
</html>


Antwort 6 von rfb

zur Eräuterung:
in
var uhr=setInterval("kegeln(2007,8,15,11,15)",1000);

trägst du dein Zieldatum ein.

Diese Zeile ruft alle 1000 Milisecs die Countdownfunktion "kegeln" auf.

Die Funktion berechnet auf etwas einfachere Weise als deine Variante die Tage, Stunden, Minuten und Sekunden bis zum Termin. Monate und Jahre habe ich einfach weggelassen, da sie völlig irrelvant sind, ein Kegelabend in 3 Jahren und 7 Monaten interessiert nicht.

Die Ausgabe erfolgt in ein einfaches span-Element (mit der id "countdowninput") statt hierfür ein input-Feld zu missbrauchen:
<span id="countdowninput">Kürze hier</span>

Irgendwas muss übrigens vorher in dem span stehen, sonst funktioniert das Script nicht sondern müsste ein wenig ausgeweitet werden.

Antwort 7 von Dörk

Tut mir leid, aber ich verstehe kein Wort! Ich hab von Java absolut keine Ahnung!

Antwort 8 von rfb

Wir reden hier auch von JavaScript und nicht von Java, das ist ein himmelweiter Unterschied.
Im Übrigen ist
Zitat:
Tut mir leid, aber ich verstehe kein Wort!
keine gute Problembeschreibung.

Nur mal so eine Bedienungsanleitung:
Markiere den Quelltext in Antwort 5 und kopiere ihn.
Öffne in einem Editor deiner Wahl deine Countdownseite.
Lösche denQuelltext und ersetze ihn durch den Inhalt der Zwischenablage.
Ersetze in der Zeile
var uhr=setInterval("kegeln(2007,8,15,11,15)",1000);

die Datumsangaben durch den nächsten Kegeltermin. Fertig!

Antwort 9 von Dörk

Jetzt hab ich es verstanden, was ich machen soll! Danke schön! Jetzt läufts auch perfekt und sieht auch gut aus!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: