DOPORUČUJEME:    Poeta.cz, MůjCitát chcete tu mít svůj odkaz ?Web není v současnosti aktualizován
Zpět na index Můjscriptu
 Přiřazovací operátory   Řetězcové operátory   Speciální operátory   Pohyblivé menu  Článků: 95; Příkladů: 64
Právě nás čte 1 člověk
 Hlavní nabídka:
Základy
Základy
Proměnné
Funkce
Větvení
Dialogová okna
Cyklus
Události
Uživatelská okna
Datum a čas
Formuláře
Obrázky
Matematické funkce
Cookies
Kompatibilita
Reference
Základy
Objekty
Ostatní
Operátory
Příklady
1-5
6-10
11-15
16-20
21-25
26-30
31-35
36-40
41-45
46-50
51-55
56-60
61-65
Nastavit jako homepage Přidat k oblíbeným
 Podsekce MůjScriptu:
Tvůrčí tým
Napsali nám
Guestbook
 Náš Webtip:
Poeta.cz - server nejen o poezii
MůjCitát - server o citátech
 Nenechte si ujít:
Řešení nekompatibility na jedné stránce
Objekt navigator
Cookie manipulátor
Využití cookies ve formulářích
Počítadlo návštěv jednoho člověka na dané stránce
Faktoriál
Animace obrázků
Záměna více obrázků
Záměna dvou obrázků
Kontrola údajů ve formuláři
Přístup k prvkům formuláře pomocí pojmenování
Přístup k prvkům formuláře pomocí pořadových čísel
window.clearTimeout()
Načasování v JavaScriptu
Operace s časovými údaji
Datum a čas - začínáme
Stavový řádek
Vytvoření nové stránky
Ovládač události onDblClick
Ovládač události onClick
Ovládač události onUnLoad
Ovládač události onLoad
Příkaz continue
Příkaz break v cyklech
Příkaz for
Příkaz while
Příkaz do while
Vstupní okno
Potvrzovací okno
Výstražné informační okno
Logické operátory
Příkaz switch
Podmínka if else (2)
Podmínka ? :
Funkce - začínáme 2
Funkce - začínáme
Pole v praxi
Proměnné v praxi
Základní aritmetické operátory
Kam se scripty? Jaká je správná základní syntaxe JS?
JavaScript - co to je?
Kalendář

V tomto příkladě si ukážeme, jak na svých stránkách zobrazit kalendář.

Zdrojový kód:

<HTML>
<HEAD>
<TITLE>Kalendář</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
dn=["pondělí","úterý","středa","čtvrtek",
"pátek","sobota","neděle"];

me=["Leden","Únor","Březen","Duben","Květen","Červen","Červenec",
"Srpen","Září","Říjen","Listopad","Prosinec"];

pd=[31,28,31,30,31,30,31,31,30,31,30,31];

function den(i) { return (i==0 ? 7:i) }

function kalendar()
{
dnes=new Date(); rok=dnes.getFullYear();

if ((rok%4==0 && rok%100!=0) || (rok%400==0)) pd[1]=29;

s='<TABLE BORDER="1" CELLPADDING="1" CELLSPACING="1">';
s+='<TR><TH COLSPAN="7">';
s+=me[dnes.getMonth()]+' '+rok+'</TH></TR>';
s+="<TR><TH>Po</TH><TH>Út</TH><TH>St</TH><TH>Čt</TH>";
s+="<TH>Pá</TH><TH>So</TH><TH>Ne</TH></TR><TR>";

dnes.setDate(1); prvniDen=den(dnes.getDay()); sloupec=1;

for(i=1;i<prvniDen;i++) {
s+="<TD>&nbsp;</TD>";
sloupec++; }

dnes=new Date(); dnesek=dnes.getDate();
posledniDen=pd[dnes.getMonth()]

for(i=1;i<=posledniDen;i++)
{
s+="<TD>";
if (sloupec==6) s+='<FONT COLOR="blue">';
if (sloupec ==7) s+='<FONT COLOR="red">';
if (i==dnesek) s+='<FONT COLOR="green">';
s+="<CENTER>"+i+"</CENTER></FONT></TD>";
sloupec ++;

if (sloupec ==8)
{
if (i!=posledniDen) s+="</TR><TR>";
sloupec =1;
}
}

if (sloupec!=1) for (i=sloupec;i<=7;i++) s+="<TD>&nbsp;</TD>";

s+="</TR></TABLE>";
document.write(s);
}
// -->
</SCRIPT>
</HEAD>
<BODY onLoad="kalendar();">
</BODY>
</HTML>


Výsledek:

Pro výsledek klikněte ZDE.

Vysvětlení činnosti:

Tento příklad je trochu náročnější a proto věnujte tomuto textu více pozornosti. Nejdříve si vysvětlíme, co má být výsledkem scriptu. Jeho výsledkem má být zobrazení tabulky kalendáře pro aktuální měsíc. A teď už se pusťme do vysvětlování syntaxe. Nejdříve jsme si vytvořili 3 pole - dn, me a pd. Pole dn obsahuje jednotlivé dny v týdnu, pole me obsahuje jednotlivé měsíce v roce a pole pd obsahuje počty dní v daných měsících. Pro další krok - funkci den(i) si musíme říci, jaké nám hraje náhoda do karet. Jelikož číslování začíná v JS od 0 a za začátek týdne se bere neděle, stačí když pomocí podmínky ? : ve funkci den(i) zadáme scriptu, aby v případě hodnoty 0 přiřadil hodnotu 7. V ostatních případech zůstane hodnota stejná. Nyní se už dostáváme k hlavní funkci a tou je kalendar(). V ní si nejdříve inicializujeme dvě proměnné. Proměnnou dnes, které přiřadíme objekt Date() a proměnnou rok, které přiřadíme metodu pro získání plného formátu roku - čili např. 2002. Rovněž v této funkci ošetříme problematiku přestupného roku. Použijeme k tomu podmínku if. Ta bude platit, jestliže zbytek po dělení roku čtyřmi bude nula, ale zároveň nesmí zbytek 0 po dělení 100. Bude také platit když bude zbytek 0 po dělení 400. Tato pravidla vychýzí z našeho kalendáře. Poté už si inicializujeme proměnnou s, ve které budou obsaženy informace pro výpis na stránce. Nejdříve ji přidáme tagy pro vytvoření tabulky. Zde uvedeme aktuální měsíc a rok a dny v týdnu. Měsíc zjistíme pomocí metody pro zjištění měsíce, načež tuto hodnotu promítneme do pole a výsledkem bude slovy vyjádřený měsíc. Rok zjistíme jen tím, že vložíme proměnnou rok, kterou jsme už předtím inicializovali. Další část scriptu nastaví den v měsíci na 1 a zjistí den v týdnu. Poté se ještě inicializuje proměnná sloupec s hodnotou jedna (viz dále). Poté již přikročíme k samotnému vytváření buněk tabulky s hodnotami dnů. Nejdříve ale musíme doplnit buňky, ve kterých nebude žádná hodnota. K tomu použijeme podmínku for, která bude platit, dokud se i nevyrovná hodnotě proměnné prvniDen, ve které máme uložen aktuální den v týdnu. Ta zároveň zvýší hodnotu proměnné sloupec a tím se posune vytvoření buňky na další den. Dále si inicializujeme proměnnou dnesek, která bude mít hodnotu dne v měsíci. Další proměnnou bude posledniDen, která zjistí pomocí pole pd, kolik má aktuální měsíc dnů. To využijeme v příkazu for, který bude platit, dokud se i nevyrovná hodnotě právě proměnné posledniDen. V tomto příkazu ještě zapíšeme tři podmínky. Jelikož chceme nějak odlišit soboty, neděle a dnešek, tak využijeme podmínky if, které pak zapíší do proměnné s nejen danou hodnotu ale i tag pro změnu barvy písma. V podmínce využijeme opět proměnnou sloupec. Rovněž musíme nějak zajistit aby se buňky neskládali za sebou, ale pod aktuální dny. K tomu opět využijeme podmínku if. Ta se zaktivuje, když bude proměnná sloupec mít hodnotu 8. V takovém přídě ještě zjistí, jestli náhodou není i z příkazu for už rovna proměnné posledniDen a pokud tedy není zapíše do proměnné s tagy pro ukončení aktuálního řádku a vytvoření nového a proměnné sloupec opět přiřadí hodnotu 1. Další část scriptu ošetřuje prázdné políčka na konci měsíce. Syntaxe je podobná jako při ošetřování prvních buněk. Nakonec proměnné s přiřadíme ukončení řádku a tabulky a následně ji necháme vypsat. Poté jen přiřadíme tagu body ovládač událostí onLoad, který po načtení aktivuje funkci kalendar().

11.07.2002 | Příklady | David Havlíček
Dnes je 19. 04. 2024
Svátek má Rostislav
 Kontakty na nás
ICQ: 108078007
muj-script@poeta.cz
mongi@centrum.cz
 Bleskové aktuality:
10.12.2002 Dlouho jsme tu neměli příklady, tak co kdybychom si dneska jeden dali?
07.12.2002 Poslední operáty, které si představíme, jsou speciální.
02.12.2002 Po delší pauze si představíme další operátory - řetězcové.
17.11.2002 Next operátory jsou přiřazovací.
10.11.2002 Jedněmi z posledních operátorů jsou porovnávací.
02.11.2002 Už jste slyšeli o logických operátorech? Pár jich taky je.
29.10.2002 Dalšími operátory jsou bitové.
26.10.2002 Dnes si představíme první z řady operátorů - aritmetické operátory.
24.10.2002 Další částí referencí jsou příkazy.
18.10.2002 Dnes se mrkneme na referenční přehled funkcí.
12.10.2002 Window je objekt, který má snad nejvíce metod a vlastností, tak se mu dnes podíváme na zoubek.
06.10.2002 Netradičně v neděli další objekt - string.
28.09.2002 Další sobota. Další objekt - screen.
21.09.2002 Hodně používáný je objekt navigator. Proto se na něj dneska zaměříme.
14.09.2002 Po týdenní pauze další referenční článek o objektu - tentokrát Math.
07.09.2002 Objekt location bude náš dnešní cíl.
04.09.2002 Na paškál si tentokrát vezmeme objekt history.
 Aktuální články:
Speciální operátory
Řetězcové operátory
Přiřazovací operátory
Porovnávací operátory

Copyright © 2001-2004 David Havlíček, design:Vít Dlouhý
Všechna práva vyhrazena (R)
Šíření článků, bez souhlasu redakce je výslovně zakázáno!