myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[JavaS*****] Countdown fehler

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 04.01.11, 22:03   #1
bludi94
Anfänger
 
Registriert seit: Dec 2010
Beiträge: 2
Bedankt: 0
bludi94 ist noch neu hier! | 0 Respekt Punkte
Standard [JavaS*****] Countdown fehler

Hi also ich häng fest hab angefangen mit javas***** hänge aber gerade fest:

also mein ziel:
Ein Sekunden wert von der DB via PHP auslesen (Erfolg)
Variable an Javas***** übergeben (Erfolg)
Sekunden in Tage Stunden Minuten Sekunden Formatieren (Misserfolg)
Zeit ablaufen lassen (Erfolg)

Kurz gesagt ich hab die sekunden die noch vergehen müssen bis zum ereigniss X diese soll in echtzeit durch Javas***** ablaufen.

Problem beim ablauf werden verschiedene zeiten aber nicht die richtigen angezeigt heißt formationsfehler die grundwerte stimmen.

PHP Code:
PHP-Code:
// $zeit ist eine diverenz aus time() und festgelegter zeit also ein             // sekundenwert
function zeitausgabe($zeit)
{
        echo 
'<span id="ausgabe"></span>';
        echo 
'<s***** type="text/javas*****"> countDown(' $zeit '); </s*****>';

Javas***** Code:
Code:
function countDown(zeit) {
    timeout = zeit;
    sec = zeit % 60;
    zeit /= 60;
    minute = zeit % 60;
    zeit /= 60;
    std = zeit % 24;
    zeit /= 24;
    sec = parseInt(sec - 0.5);
    minute = parseInt(minute - 0.5);
    std = parseInt(std - 0.5);
    zeit = parseInt(zeit - 0.5);
    
    if(zeit > 0)
    {
      zeitstring = zeit + ":";    
    }
    else
    {
      zeitstring = "";    
    }
    
    zeitstring += std + ":";
    
    if(minute > 9)
    {
      zeitstring += minute + ":";    
    }
    else
    {
      zeitstring += "0" + minute + ":";
    }
    
    if(sec > 9)
    {
      zeitstring += sec;
    }
    else
    {
      zeitstring += "0" + sec;    
    }
    document.getElementById("ausgabe").innerHTML = zeitstring.toString();
    timeout --;
    if (timeout < 0) {
        document.getElementById("ausgabe").innerHTML = "<a onclick=window.location.href='index.php?'>Bau abgeschlossen</a>";
    } else {
        setTimeout("countDown(timeout)", 1000);
    }
}
die codes werden in HTML zusammengeführt dies läuft einwandfrei.

Bitte um hilfe schonmal danke.
bludi94 ist offline   Mit Zitat antworten
Ungelesen 05.01.11, 08:52   #2
kogs
Anfänger
 
Registriert seit: Jan 2010
Beiträge: 3
Bedankt: 5
kogs ist noch neu hier! | 0 Respekt Punkte
Standard

Morgen,

ich hab mir deine Formeln jetzt nicht genau durch den kopf gehen lassen, aber ich würd die Umrechnung von
Sekunden auf Stunden:Minuten:Sekunden
folgendermaßen angehen.

Code:
std = Math.floor(timeout / 3600);
min = Math.floor((timeout - (std * 3600)) / 60);
sek = timeout - (std * 3600) - (min * 60);
ist kürzer und glaube auch einfacher zu lesen

übrigens, Math.floor rundet immer ab, ich denke das ist das was du mit

Code:
parseInt(xxx - 0.5);
auch erreichen wolltest.


Gruss
kogs ist offline   Mit Zitat antworten
Ungelesen 05.01.11, 14:04   #3
bludi94
Anfänger
 
Registriert seit: Dec 2010
Beiträge: 2
Bedankt: 0
bludi94 ist noch neu hier! | 0 Respekt Punkte
Standard

kogs danke für deinen schnellen Tipp hat geklappt also fals jemand das sebe vorhaben/problem hat hier der fehlerfreie code

Code:
// JavaS***** Document
var timeout; // Variable für funktion countDown
function countDown(zeit)
{
    timeout = zeit; // Ist Global angelegt worden

	// Umwanflund der Sekunden in Tage Stunden Minuten Sekunden
    var sec = zeit;
	var tag = Math.floor(sec / (60*60*24) );
	sec -= tag*(60*60*24);
    var std = Math.floor( sec / (60*60) );
    sec -= std*(60*60);
    var minute = Math.floor( sec / 60 );
    sec -= minute*60;

	// Formatierte ausgabe der Zeit
    var zeitstring = "";
	if (tag>0)
	{
		if (tag == 1)
		{
		  zeitstring += tag + " Tag ";	
		}
		else
		{
		  zeitstring += tag + " Tage ";	
		}
	}
	
    if (std>0)
    {
        if (std<10) zeitstring += '0';
        zeitstring += std.toString() + ':';
    }
    if (std>0 || minute>0)
    {
        if (minute<10) zeitstring += '0';
        zeitstring += minute.toString() + ':'
    }
    if (sec<10) zeitstring += '0';
    zeitstring += sec.toString();

    if (std > 0) zeitstring += " Std";
    else if (minute > 0) zeitstring += " Min";
    else zeitstring += " Sek";

	// Eintragen der zeit in HTML
    document.getElementById("ausgabe").innerHTML = zeitstring;
	// veringerung der Zeit um 1 Sekunde
    timeout --;
	
    if (timeout < 0)
    {
		// Bei ablauf der Zeit wird ein Link ausgegeben
        document.getElementById("ausgabe").innerHTML = "<a href='index.php'>Bau abgeschlossen<\/a>";
    }
    else
    {
		// Wenn die zeit noch nicht rum ist Selbstaufruf nach 1 Sekunde
        setTimeout("countDown(timeout)", 1000);
    }
}
bludi94 ist offline   Mit Zitat antworten
Ungelesen 05.01.11, 21:43   #4
tha_specializt
`
 
Registriert seit: Nov 2010
Ort: Zuhause
Beiträge: 142
Bedankt: 37
tha_specializt ist noch neu hier! | 0 Respekt Punkte
Standard

Code:
	
    if (timeout < 0)
    {
das müsste
Code:
if (timeout <= 0)
lauten. Zumal ich das manuelle Herunterzählen für unsinnig halte, nutze doch einfach [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ], das ist bedeutend präziser
tha_specializt ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.


Sitemap

().