Script fehler
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
ansatz
ausgabe
code
fehler
heutige datum
jahr
kurzversion
monat
netz
oktober
page
tag
variable page
vergessen
verschwinden
weglassen
-
Ich habe folgendes Script, nun wird das aber so angezeigt:
undefinedDiese Seite ist seit dem 5. tag/oktober">Oktober 1999 im Netz
Also genau 10 Jahre, 1 Monat und 17 Tage.
Wo liegt der fehler das undefined angezeigt wird?
Und was kann von dem Script noch weg, es war noch das heutige Datum dabei.
<script language="JavaScript"> <!-- today = new Date(); bYear = 1999; // Start Jahr bMonth = 10; // Start Monat bDay = 5; // Start Tag tYear = today.getFullYear(); tMonth = (today.getMonth() ) + 1 ; tDay = today.getDate(); tHour = today.getHours(); fYear = 0; fMonth = 0; fDay = 0; fHour = 0; x = 0; y = 0; z = 0; a = 0; b = 0; c = 0; function testMonth() { if (y==4 || y==6 || y==9 || y==11) x=30 else if (y==2) x=28 else x=31 } function testDay() { fDay = (z - bDay) + tDay; if (fDay > a) { fMonth += 1; fDay = fDay - a; } } y = bMonth; testMonth(); z = x; y = bMonth; testMonth(); a = x; if (bMonth <= tMonth) { fYear = tYear - bYear; fMonth = (tMonth - bMonth); testDay(); } fYear = (tYear - bYear) - 1 fMonth = ((12 - bMonth) + tMonth) - 1; testDay(); if (fMonth >= 12) { fYear += 1; fMonth -= 12; } with(Math) { theYear=fYear; tensYear=floor(theYear/10); onesYear=theYear-(tensYear*1); theMonth=fMonth tensMonth=floor(theMonth/10); onesMonth=theMonth-(tensMonth*1); theDay=fDay tensDay=floor(theDay/10); onesDay=theDay-(tensDay*1); var testArray = new makeArray("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"); for (z=1; z<=12; z++) { if (tMonth==z) { var b=testArray[z] } } for (z=1; z<=12; z++) { if (bMonth==z) { var c=testArray[z] } } } var page page += "Diese Seite ist seit dem <b>"+bDay+". "+c+" "+bYear+"</b> im Netz<br>" page += "Also genau <b>" if(parseInt(tensYear+onesYear) == 1) { page += tensYear + onesYear + " Jahr</b>,<b> " } else { page += tensYear + onesYear + " Jahre</b>,<b> " } if(parseInt(tensYear+onesYear) == 0) { page += "" } if(parseInt(tensMonth+onesMonth) == 1) { page += tensMonth + onesMonth + " Monat </b>und<b> " } else { page += tensMonth + onesMonth + " Monate </b>und<b> " } if(parseInt(tensDay+onesDay) == 1) { page += tensDay + onesDay + " Tag</b>." } else { page += tensDay + onesDay + " Tage</b>." } function makeArray() { this.length = makeArray.arguments.length for (var i = 0; i < this.length; i++) this[i+1] = makeArray.arguments[i] } document.write(page) // --> </script>
mfg: ellogro2009 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
also das undefined kommt von der Variable page, welche du undefiniert erstellst:
(den Strichpunkt nicht vergessen ;) ).var page
Mit z.B.
sollte das undefined verschwinden.var page = "";
Was du weglassen kannst, das hängt davon ab was du eigentlich haben willst. Wenn du wirklich nur die Ausgabe möchtest, die du beschreibst, dann hier mal eine Kurzversion des Scripts:
<script language="JavaScript"> <!-- bYear = 1999; // Start Jahr bMonth = 10; // Start Monat bDay = 5; // Start Tag strMonth = "Oktober"; // Start Monat als String bRest = 26; // Resttage des Startmonats today = new Date(); tYear = today.getFullYear(); tMonth = today.getMonth() + 1 ; tDay = today.getDate(); tHour = today.getHours(); diffYear = tYear - bYear; diffMonth = tMonth - bMonth; diffDay = tDay - bDay; if (diffDay < 0) { if (diffMonth > 0) { diffMonth --; } else { diffMonth += 11; diffYear --; } diffDay = bRest + tDay }; if (diffMonth < 0) { diffYear --; diffMonth += 11; }; var page = "Diese Seite ist seit dem <b>"+bDay+". "+strMonth+" "+bYear+"</b> im Netz<br>" page += "Also genau <b>" + diffYear; page += (diffYear == 1) ? " Jahr, ": " Jahre, "; page += diffMonth; page += (diffMonth == 1) ? " Monat ": " Monate "; page += "und " + diffDay; page += (diffDay == 1) ? " Tag.": " Tage."; document.write(page); // --> </script>
Ein anderer Ansatz unter Berücksichtigung von Schaltjahren wäre dann auch noch dieser:
<script language="JavaScript"> <!-- function schaltjahr(jahr){ return jahr%4 == 0 && (jahr%100 != 0 || jahr%400 == 0); } function monatstage(date){ normTage = new Array(31,28,31,30,31,30,31,31,30,31,30,31); schaltTage = new Array(31,29,31,30,31,30,31,31,30,31,30,31); return schaltjahr(date.getFullYear()) ? schaltTage[(date.getMonth()+1)%12] : normTage[(date.getMonth()+1)%12]; } bYear = 1999; // Start Jahr bMonth = 10; // Start Monat bDay = 5; // Start Tag strMonth = "Oktober"; // Start Monat als String today = new Date(); msecDay = 24 * 3600 * 1000; jsMonth = bMonth -1; bDate = new Date(bYear, jsMonth, bDay); diffMonth = 0; while (bDate.getTime() <= today.getTime()) { jsMonth++; diffMonth ++; bDate = (bDay > monatstage(bDate)) ? new Date(bYear + Math.floor(jsMonth / 12), jsMonth % 12, monatstage(bDate)) : new Date(bYear + Math.floor(jsMonth / 12), jsMonth % 12, bDay); } diffMonth--; jsMonth--; bDate = (bDay > monatstage(bDate)) ? new Date(bYear + Math.floor(jsMonth / 12), jsMonth % 12, monatstage(bDate)) : new Date(bYear + Math.floor(jsMonth / 12), jsMonth % 12, bDay); diffDay = Math.floor((today.getTime() - bDate.getTime()) / msecDay); diffYear = Math.floor(diffMonth / 12); diffMonth = diffMonth % 12; var page = "Diese Seite ist seit dem <b>"+bDay+". "+strMonth+" "+bYear+"</b> im Netz<br>" page += "Also genau <b>" + diffYear; page += (diffYear == 1) ? " Jahr, ": " Jahre, "; page += diffMonth; page += (diffMonth == 1) ? " Monat ": " Monate "; page += "und " + diffDay; page += (diffDay == 1) ? " Tag.": " Tage."; document.write(page); // --> </script>
Gruß
Manni
Edit: Fehler im ersten Script beseitigt, zweites Script eränzt.
Beitrag zuletzt geändert: 22.11.2009 21:31:21 von bandi999 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage