sobota, 6 października 2012

Kalendarz w javascript

Cześć, w dzisiejszym odcinku nauczę was jak zrobić taki kalendarz w javascript

.
NiePonWtoSroCzwPiaSob
A więc na początku tworzymy tabelkę która będzie posiadała 6 wierszy oraz 7 kolumn nadamy jej unikatową nazwę np. tabelka. W pierwszym wierszu wypisujemy dni tygodnia od niedzieli :

<table id="tabelka">
<tr>
<td>Nie</td><td>Pon</td><td>Wto</td><td>Sro</td><td>Czw</td><td>Pia</td><td>Sob</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
</tr>
</table>

Następnie tworzymy skrypt któy wypełni nam naszą tabelkę datami oraz zaznaczy aktualny dzień:

<script type="text/javascript">
function kalendarz()
{
var wiersz=1 //dni wstawaimy od wiersza nr.1 ponieważ w wierszu 0 powstawialiśmy nazwy dni tygodnia
Data = new Date(); //pobieramy date
var aktmies=Data.getMonth() //pobieramy miesiąc który jest aktualnie
var aktdzien=Data.getDate() //pobieramy aktualny dzień
var dzien=1 //dni liczymy od 1
Data.setDate(dzien) //cofniecie na poczatek aktualnego miesiaca
while (Data.getMonth()==aktmies) //petla dopoki nie skonczy sie miesiac

{
document.getElementById("tabelka").rows[wiersz].cells[Data.getDay()].innerHTML=Data.getDate() //napisz dzien w polu
 if (Data.getDate()==aktdzien)
document.getElementById("tabelka").rows[wiersz].cells[Data.getDay()].className="dzis" //dodajemy klase "dzś" do komórki która przechowuje date aktualnego dnia

if (Data.getDay()==6) {wiersz++} //dodajemy wiersz ponieważ skończył nam się tydzień
dzien++ //zwiększamy date o kolejny dzień
Data.setDate(dzien) //kolejny dzien
}
}
</script>

Skrypt dodajemy pomiędzy znaczniki <head>.

Po tabelce dopisujemy
<script type="text/javascript">
 kalendarz();
</script>
Czyli uruchamiamy funkcję.

Teraz w możemy pozmieniać styl kalendarza np:
<style type="text/css">
            #tabela,td,th{
                border:solid 2px #03436A;    
                border-collapse: collapse;
            }
            td {
                width:50px;
                height:50px;
                text-align: center;
                font-size: 28px;
                font-family: "Comic Sans MS";
            }

            tr:nth-child( odd ) {  //wiersze parzyste
                background-color: #FFCC40    ;
               
            }
            tr:nth-child( even ) { //wiersze nieparzyste
                background-color: #A62800    ;
                color: white;
               
            }
            .dzis { //komórka która została określona jako dzisiaj
                background-color: #FF3D00        ;
                border: 3px solid white;               
            }
            tr:first-child { //wiersz z nazwami dni tygodnia
               
                background-color: #0969A2    ;
                color: white;
                               
          }

</style>
 I to wszystko, prosty skrypt a efekt ciekawy.

2 komentarze:

  1. A mój kalendarz też będzie miał taki przecinek na początku ? A i jak se go wydrukuje to też będzie się data zmieniać ?

    OdpowiedzUsuń
  2. Jest możliwość przydzielenia kolorów pod konkretne daty np:
    1 styczeń - kolor 1
    2 styczeń - kolor 2
    3 styczeń - kolor 3
    ...i aby kalendarz powtarzał te kolory co 3 dni ( mam na myśli taki kalendarz zmianowy - co 3 dni jedna zmiana)

    OdpowiedzUsuń