setInterval scheint doppelt ausgeführt zu werden

Paspirgilis

Weißer Powerranger
Ich hab sowas noch nie gesehen:
Dies ist der Code.
Am ende ist ein Interval gemacht um eine Uhr zu "animieren".
Er springt aber jedes mal 2 Minuten vor aber nicht wie "++" sondern eine minute vor dann direct danach noch eine Minute vor.
Ich weis nicht weiter, bitte um hilfe.

Javascript:
function initiateClock()
	{
	document.getElementById( "hour" ).style.backgroundImage = "url('css/images/clock/hour_" + hour + ".gif')";
	if(min > 20)
		document.getElementById( "hour" ).style.backgroundImage = "url('css/images/clock/hour_" + hour + "_20.gif')";
	if(min > 40)
		document.getElementById( "hour" ).style.backgroundImage = "url('css/images/clock/hour_" + hour + "_40.gif')";
	document.getElementById( "min" ).style.backgroundImage = "url('css/images/clock/min_" + min + ".gif')";
	document.getElementById( "min" ).innerHTML = "";
	if(hour > 8 && hour < 17)
		document.body.style.background = "#FFF url('css/images/clock/pagebackground" + hour + ".gif') no-repeat center top";
	if((hour > 5 && hour < 9) || (hour > 16 && hour < 19))
		document.body.style.background = "#004c6d url('css/images/clock/pagebackground" + hour + ".gif') no-repeat center top";
	if((hour > 0 && hour < 6) || (hour > 18 && hour < 25))
		document.body.style.background = "#0b2a49 url('css/images/clock/pagebackground" + hour + ".gif') no-repeat center top";
	}
function proceedTime()
	{
    hourBefore = hour;
    min++;
    if (min == 61)
        {
        min = 1;
        hour++;
        if(hour > 8 && hour < 17)
            document.body.style.background = "#FFF url('css/images/clock/pagebackground" + hour + ".gif') no-repeat center top";
        if((hour > 5 && hour < 9) || (hour > 16 && hour < 19))
            document.body.style.background = "#004c6d url('css/images/clock/pagebackground" + hour + ".gif') no-repeat center top";
        if((hour > 0 && hour < 6) || (hour > 18 && hour < 26))
            document.body.style.background = "#0b2a49 url('css/images/clock/pagebackground" + hour + ".gif') no-repeat center top";
        }
    if(hour == 25)
        hour = 1;
    if(hour != hourBefore)
        document.getElementById( "hour" ).style.backgroundImage = "url('css/images/clock/hour_" + hour + ".gif')";
    if(min == 20 || min == 40)
        document.getElementById( "hour" ).style.backgroundImage = "url('css/images/clock/hour_" + hour + "_" + min + ".gif')";
    document.getElementById( "min" ).style.backgroundImage = "url('css/images/clock/min_" + min + ".gif')";
	}
setInterval("proceedTime()", 60000);
initiateClock();

MFG
Mark Paspirgilis
 
Moin Mark,

da wird nichts doppelt ausgeführt, du kannst das testen, indem du zu Beginn von proceedTime() mal einen alert() ausgeben lässt.

Du solltest vielleicht den Ablauf in der Funktion etwas besser kontrollieren:
ermittle erstmal die entgültigen Werte für min und hour, wie du sie benötigst, und verarbeite sie dann. Und wenn du mit der Verarbeitung fertig bist, verlasse die Funktion per return, dann läufst du nicht Gefahr, dass noch folgende Anweisungen abgearbeitet werden.

BTW: JS besitz ein Datums-Objekt, anstatt da per Hand Zeitwerte zu inkrementieren, erhältst du genauere Werte, wenn du mit diesem Objekt arbeitest ;)
 
Cool werd ich machen mit dem datums object.
Auf die Idee mit dem alert war ich auch schon gekommen,
Das war eine von vielen bestätigung die ich mir hab geben lassen bevor ich hier poste.
Ich werds mal um bauen, und mit den Datums object arbeiten und aml gucken ob morgen das problem bestehen bleibt.


PS: Lustiges neues bild sven :D (bzw. hintergrund, und bist du das in der kiste? Hattest ja davor auch schon)
 
Zuletzt bearbeitet:
Ich bin so blöde das ist wirklich nicht mehr lustig-.-
Ich habe diese seite bzw. bin dabei sie zu optimieren und habe alles JS nach hinten gepackt.
auch das clock.js include aber vergessen es aus der einbindung in der mitte rauszunehmen.

MaG (<-- M.a.G. steht für: Mit angepisstem Gruß :D )
Mark Paspirgilis


PS: Um diesmal keine verwarnung zu bekommen war ich diesmal vorher woanders über mich selber fluchen und dann hab ich diesen post geschrieben :D
 

Neue Beiträge

Zurück