kostenloser Webspace werbefrei: lima-city


Script fehler

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    ellogro2009

    Kostenloser Webspace von ellogro2009

    ellogro2009 hat kostenlosen Webspace.

    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&auml;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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,

    also das undefined kommt von der Variable page, welche du undefiniert erstellst:
    var  page
    (den Strichpunkt nicht vergessen ;) ).
    Mit z.B.
    var page = "";
    sollte das undefined verschwinden.

    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
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!