Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Monatskalender

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Monatskalender

    Hallo zusammen!

    Ich möchte mit Javascript einen "date-picker" machen.

    Da ich noch Anfänger in Sachen Javascript bin, hab ich erst mal gegoogelt und Informationen gesucht.
    Ich hab auch viel gefunden, aber keiner der date-picker war so wie ich ihn wollte, und generell ist es mir eigentlich lieber, dass ich genau weiß, was ein Script macht, und das war bei den (sehr umfangreichen) freien Scripts leider nicht der Fall.

    Ich hab also mal in SelfHTML nachgesehen, und dort ein Beispiel gefunden.
    Es ist zwar nur ein kleiner Kalender ohne Funktion, aber für den Anfang mal genau das was ich gesucht hab.

    Da ich noch kein Experte in Javascript bin, hab ich mir mal die zeit genommen, den Code zu kommentieren (damit ich auch sichergehen kann, dass ich alles verstanden hab) und bin auf eine Zeile gestoßen, die mir nicht ganz klar ist:

    Code:
    	if (Start > 0)			/* wenn kleiner 0 = -1 (Warum das ?) */
    	{ Start--; }
    der ganze Code sieht so aus:
    [code]
    <script type="text/javascript">

    /* Kalender */

    var d = new Date(); /* aktuelles Datum ermitteln */
    var dm = d.getMonth() + 1; /* aktuellen Monat ermitteln */
    var dj = d.getYear(); /* aktuelles Jahr ermitteln */

    if (dj < 999) /* wird bei älteren Browsern benötigt, die nicht Jahr-2000-kompatibel sind */
    { dj += 1900; } /* damit bei getYear das richtige Jahr ermittelt wird */


    Kalender(dm, dj); /* Funktion Kalender aufrufen */


    function Kalender (Monat, Jahr)
    {
    /* Monatsnamen definieren */
    Monatsname = new Array("Jänner", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli",
    "August", "September", "Oktober", "November", "Dezember");
    /* Wochentagsnamen definieren */
    Tag = new Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");

    var KSchrArt = "Verdana,Arial"; /* Schriftart Kalenderkopf */
    var KSchrGroesse = 3; /* Schriftgroesse 1-7 Kalenderkopf */
    var KSchrFarbe = "#FFFF00"; /* Schriftfarbe Kalenderkopf */
    var Khgrund = "#000066"; /* Hintergrundfarbe Kalenderkopf */
    var TSchrArt = "Verdana,Arial"; /* Schriftart Tagesanzeige */
    var TSchrGroesse = 3; /* Schriftgroesse 1-7 Tagesanzeige */
    var TSchrFarbe = "#000000"; /* Schriftfarbe Tagesanzeige */
    var Thgrund = "#D0F0F0"; /* Hintergrundfarbe Tagesanzeige */
    var SoFarbe = "#E00000"; /* Schriftfarbe f. Sonntage */
    var Ahgrund = "#FFFF00"; /* Hintergrundfarbe f. heutigen Tag */

    var jetzt = new Date(); /* aktuelles Datum ermitteln */
    var DieserMonat = jetzt.getMonth() + 1; /* aktuellen Monat ermitteln */
    var DiesesJahr = jetzt.getYear(); /* aktuelles Jahr ermitteln */

    if (DiesesJahr < 999) /* wird bei älteren Browsern benötigt, siehe oben */
    { DiesesJahr += 1900; }

    var DieserTag = jetzt.getDate(); /* aktuellen Tag ermitteln */
    var Zeit = new Date(Jahr, Monat - 1, 1); /* Datum vom 1. des Monats ermitteln */
    var Start = Zeit.getDay(); /* Wochentag des 1. im Monat ermitteln */

    if (Start > 0) /* wenn kleiner 0 = -1 (Fehler ?) */
    { Start--; }
    else /* ansonsten = 6 */
    { Start = 6; }

    var Stop = 31; /* Anzahl der Tage im Monat */
    if (Monat == 4 || Monat == 6 || Monat == 9 || Monat == 11) /* April, Juni, September und November haben 30 Tage */
    { --Stop; } /* 31 - 1 = 30 */
    if (Monat == 2) /* Februar hat 28 oder 29 Tage */
    {
    Stop = Stop - 3; /* 31 - 3 = 28 */
    if (Jahr % 4 == 0) /* wenn Jahr durch 4 teilbar = Schaltjahr */
    {
    Stop++; /* 28 + 1 = 29 */
    if (Jahr % 100 == 0) /* wenn Jahr auch durch 100 teilbar = kein Schaltjahr */
    { Stop--; } /* 29 - 1 = 28 */
    }
    if (Jahr % 400 == 0) /* wenn Jahr durch 400 teilbar = Schaltjahr */
    { Stop++; } /* 28 + 1 = 29 */
    }

    document.write('<table border="3" cellpadding="1" cellspacing="1">');
    /* Monatskopf im Format: Monatsname " " Jahr erstellen -> August 2005 */
    var Monatskopf = Monatsname[Monat - 1] + " " + Jahr;

    /* Funktion Schreibekopf aufrufen */
    SchreibeKopf(Monatskopf, Khgrund, KSchrFarbe, KSchrGroesse, KSchrArt);
    /* Tageszahl dient als Zähler, sie wird mit jedem ausgegebenen Tag um 1 erhöht */
    var Tageszahl = 1;
    /* 6 Reihen für die Wochen erstellen */
    for (var i = 0; i <= 5; i++)
    {
    document.write("<tr>");
    /* 6 Zellen für die ersten 6 Tage erstellen -> wenn der 1. des Monats ein Sonntag ist bleiben die ersten 6 Zellen leer */
    for (var j = 0; j <= 5; j++)
    {
    /* Wenn der 1. des Monats kein Montag ist, bleibt die 1. Zelle leer -> erzwungene Leerzeichen (


  • #2
    Es wird nicht gefragt, ob Start kleiner 0 is1, sondern ob Start grösser 0 ist.

    Code:
       if (Start > 0)         /* ist Start grösser 0 */
       { Start--; }          /* dann ziehe eins ab. */
       else               /* ansonsten = 6 */
       { Start = 6; }
    Der normale Rückgabewert von date.getDay() ist
    0 - Sonntag
    ...
    6 - Samstag

    obriger Code sorgt nun für eine andere Reienfolge
    0 - Montag
    ...
    6 - Sonntag

    Kommentar


    • #3
      http://www.projekt-daybook.de
      Klick mich


      Kommentar


      • #4
        Danke für die Antwort!

        Da hab ich doch glatt ein > für ein < gehalten ...

        Jetzt hab ich den Code ganz verstanden und kann damit weiterarbeiten.

        Korrekt kommentiert ist also das hier:
        Code:
        /* -> getDay() liefert 0 als Sonntag (englisch) 0 soll aber Montag sein */
        	if (Start > 0)			/* wenn größer 0 */
        	{ Start--; }			/* dann -1 -> damit nicht Sonntag, sondern Montag der 1. Tag der Woche ist */
        	else					/* ansonsten = 6 -> wenn Start = 0 = Sonntag -> 6 -> letzter Tag der Woche */
        	{ Start = 6; }

        Kommentar


        • #5
          @md5hash:

          Das sieht fast genauso aus wie ich mir das vorstelle, wie ist das denn gemacht?

          Kommentar


          • #6
            http://www.calendarxp.net/tt_pop.shtml gibts da in vielen versionen.

            super leicht einzusetzen und zu verändern.

            habe einige dinge umprogrammiert obwohl ich von java script keine ahnung habe und man kann es trotzdem schaffen da alles wirklich super einfach geschrieben ist.

            und ne riesen konfig datei.

            stefan
            Klick mich


            Kommentar


            • #7
              wass willst du es ist alles gut

              Kommentar


              • #8
                http://www.calendarxp.net/tt_pop.shtml

                ist eine sehr schöne Hilfe, nur wie stehts es mit der Lizenz ? ich würde das ganze in einem Intranet laufen lassen. Und was die Lizenzvereinbarungen angeht, bin nicht gerade ein Mensch mit guten Englisch kenntnissen.

                Schonmal jemand dort angefragt ?

                MFG

                Cyberbob
                ***********************************
                The only winning move is not to play!
                ***********************************

                Kommentar

                Lädt...
                X