Eigenen Event Countdown .js Fehler?

Shorty1968

Erfahrenes Mitglied
Hallo ich bin dabei mir einen Event Countdown für meine Seite zu bauen,es ist soweit auch alles fertig und Funktioniert,es gibt nur ein Problem mit dem Inhalt der EventCountdown.class.js der wie Folgt aussieht.
Code:
function EventCountdown(event) {
	
	this.eventTime = event;
	this.element = element;
	
	this.printCountdown = function() {
		var now = new Date();
		if (now < this.eventTime) {
			var years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0;
		
			while(now < this.eventTime) {
				hours++;
				now.setFullYear(now.getFullYear()+1);
			}
			now.setFullYear(now.getFullYear()-1);
			hours--;

			while(now < this.eventTime) {
				months++;
				now.setMonth(now.getMonth()+1);
			}
			now.setMonth(now.getMonth()-1);
			months--;
			
			while(now.getTime()+(24*60*60*1000) < this.eventTime) {
				days++;
				now.setTime(now.getTime()+(24*60*60*1000));
			}
			hours = Math.floor((this.eventTime - now)/(60*60*1000));
			now.setTime(now.getTime() + hours*60*60*1000);
			
			minutes = Math.floor((this.eventTime - now)/(60*1000));
			now.setTime(now.getTime() + minutes*60*1000);
			
			seconds = Math.floor((this.eventTime - now)/1000);
			
			(days != 1)?days = days + ' ' + language['wcf.global.date.days'] + ', ':days = days + ' ' + language['wcf.global.date.day'] + ', ';
			(hours != 1)?hours = hours + ' ' + language['wcf.global.date.hours'] + ', ':hours = hours + ' ' + language['wcf.global.date.hour'] + ', ';
			(minutes != 1)?minutes = minutes + ' ' + language['wcf.global.date.minutes'] + ' ' + language['wcf.global.and'] + ' ':minutes = minutes + ' ' + language['wcf.global.date.minute'] + ' ' + language['wcf.global.and'] + ' ';
			if (seconds < 10) seconds = "0" + seconds;
        	(seconds != 1)?seconds = seconds + ' ' + language['wcf.global.date.seconds']:seconds = seconds + ' ' + language['wcf.global.date.second'];
        	
        	var output = days + hours + minutes + seconds + ' ' + language['wbb.global.untilNewEvent'];
        	if (this.element.hasChildNodes()) {
        		this.element.firstChild.nodeValue = output;
        	} else {
        		var node = document.createTextNode(output);
        		this.element.appendChild(node);
        	}
        	return true;
		} else {
			var output = language['wbb.global.newEvent'];
			if (this.element.hasChildNodes()) {
        		this.element.firstChild.nodeValue = output;
        	} else {
        		var node = document.createTextNode(output);
        		this.element.appendChild(node);
        	}
			return false;
		}
	};
}
Wenn ich im ACP das Ablauf Datum einstelle wird es im Forum komplett Falsch übergeben oder schon als Abgelaufen angezeigt.

Ich versuche mal ein Beispiel zu geben wenn ich im ACP Start Datum den 10 November 2013 einstelle und für den Ablauf den 12 November 2014 Zeigt er mir im Forum an das der Countdown in 21 Tagen, 5 Stunden, 3 Minuten 55 Sekunden abläuft,was stimmt bei meiner EventCountdown.class.js nicht?
 
Hi
Hast du schon selbst versucht deinen Code zu debuggen?

Weil hier hat ja eher niemand Lust die "Drecksarbeit" zu übernehmen und da ich keine console.log()'s drin sehe denke ich eher nicht. Also, auf ans Werk :)
Wenn du es nicht findest, dann zumindest das Problem "herunterbrechen" und den problematischen Teil nochmals posten.

Was ich dir aber geben kann ist ein Beispiel wo 12. Nov. 2014 - 10. Nov. 2013 367Tage ausspuckt! (Damit du siehst wie man korrekt aus zwei Daten die Differenz bekommt)
http://jsfiddle.net/Hqgq7/
 
Hallo leider weiß ich nicht wie genau ich das debuggen kann,sonst hätte ich es schon gemacht.

Leider verstehe ich nicht was genau du mir mit dem Beispiel sagen möchtest?
 
Du kannst dir an jeder Stelle die dich interessiert folgenden Code einbauen:
Javascript:
console.log(variable);
Und siehst dann den Inhalt/Wert deiner Variable in der Konsole deines Browsers.

Mit meinem Beispiel wollte ich dir nur eine einfache Möglichkeit zeigen wie du die Differenz von zwei Daten in Tagen bekommst.
Weil sowas hier:
Javascript:
while(now.getTime()+(24*60*60*1000) < this.eventTime) {
                days++;
                now.setTime(now.getTime()+(24*60*60*1000));
            }
wo du in einer Schleife durchgehst und jedesmal einen weiteren Tag hinzufügst, ist schon sehr "schräg".
 
Ok danke weil ich nun erst anfange mit Javascript zu Arbeiten,meine Frage hier was Falsch ist.

Mit Hilfe von euch möchte ich den Fehler finden und verbessern.

Ich schaue mir das nun noch mal genau mit deinen Hinweisen an.
 
Ich habe nun herraus gefunden das es daran liegt das ich den Counter zum Ende an ein Bestimmtes Datum gebunden habe,das es über Google ein gefundener Code eines Silvester Countdown ist den ich als ausgangs Basis verwendet habe.

Leider weiss ich nicht wo genau ich das nun in was ändern muss,damit das ende Frei wählbar ist.
 

Neue Beiträge

Zurück