JavaScript ************************

MENU:
----------------------------------------------------------
-----
-
Základy tvorby
Proměnné
Pole
Větvení
Aritmerické operátory
Logické operátory
Porovnávací operátory
Cykly
Objekty
Seznam objektů
Objekt navigator
Objekt document
Objekt history
Objekt Date
Stavový řádek
Objekt event
Objekt location
Objekt Array
Objekt window - práce s okny
Objekt Math
Objekt screen
Objekt string
Události v Javascriptu
Funkce
Triky s obrázky
Formuláře
Nabídky a seznamy
Matematika v Javaskriptu
Časovač
Hudba
Klíčová slova
Příklady




Základy tvorby skriptů

Pro zapsání javascriptu do html kódu slouží párová značka <SCRIPT>
Je dobré uzavřít samotný script do komentáře, kvůli prohlížečúm, které nepodporují skripty.
Existuje také párový tag <NOSCRIPT>, mezi něj lze vypsat zpráva pro prohlížeče bez podpory scriptu.

Tag <SCRIPT> má několik parametrů - LANGUAGE="JavaScript" a SRC="soubor.js".
Parametr Language slouží k určení skriptovacího jazyka a parametr
SRC slouží k načtení skriptu ze souboru (vhodné při použití na více stránkách)
Je konvence používat příponu .JS. Soubor obsahuje samotný skript bez tagů <Script> ...
Skript pak vypadá:
<SCRIPT language="JavaScript>
<!--
.....Skript
//-->
Každý řádek skriptu by měl být ukončen stredníkem.

Komentáře: Pro jednořádkový komentář slouží značka // komentář
            Víceřádkový komentář se uzavírá mezi značky /* text... */
Vypisování na obrazovku: Při vypisování např. funkcí dokument.write() se mezi závorky zapíše:
- text mezi uvozovkami - bude přesně vypsán
- jméno proměnné bez uvozovek - bude vypsána její hodnota
- značky HTML - pro formátování textu - např <br> pro výpis na další řádek
- + - pro spojování více řádků nebo spojení "textu"+proměnné+"dalšího textu" ...
- / - pro zápis speciálních znaků jako např. uvozovek: document.write("tento text má být v /"uvozovkách/" ");


!!! Pozor - JavaScript je CASE SENSITIVE - rozlišuje velká a malá písmena.
proto je nutno dávat pozor na zápis funkcí,proměnných... Skript potom nemusí fungovat

Např. document.write() je správně, ale Document.write() už nefunguje.
Speciální znaky:



Pro použití nějaké funkce v odkazu lze místo prázdných uvozovek v odkazu (aby se nenačítala stránka) a použití události onClick, použít: <A HREF="javascript:funkce();">Odkaz<A>
Zpět na menu
------------------------------------------------------------------------------------------------------------------------------------------------------------------

PROMĚNNÉ

Proměnné lze deklarovat na začátku skriptu pomocí klíčového slova: VAR jméno_proměnných;
Není to však nezbytné a proměnnou lze vytvořit až přímo přiřazením hodnoty do proměnné:
proměnná=hodnota;
Název proměnné- musí začínat písmenem nebo _ nebo $ a může obsahovat i číslice a podtržítko
- nesmí obsahovat mezery a nesmí se shodovat s klíčovým slovem
- není omezen délkou a závisí na velikosti písmen (viz. úvod)
Proměnná nemá udaný typ, proto do ní lze vkládat jakékoliv údaje.

Lokální a globální proměnné
Globální proměnné jsou proměnné definované v celém programu - lze je použít kdekoliv. Lokální proměnné jsou definovány uvnitř funkcí, většinou jako pomocné proměnné. Funkce s nimi může pracovat, ale po skončení funkce jsou pro zbytek programu neznámé a tedy pokusem o přiřazení do této proměnné nastane chyba.

Zpět na menu:
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Aritmetické operátory


UkázkaVysvětlení
pocet++pocet=pocet+1
pocet--pocet=pocet-1
pocet+=xpocet=pocet+x
pocet-=xpocet=pocet-x
pocet*=xpocet=pocet*x
pocet/=xpocet=pocet/x
+sčítání
-odčítání
*násobení
/dělení
%zbytek po celočíselném dělení(modulo)


Zpět na menu:
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Větvení

Větvení slouží k úpravě programů na základě splnění/nesplněný určitých podmínek.

Porovnávací operátory
__________________________________
Výrazvrací true, když
a==bjsou obě hodnoty stejné
a!=bjsou hodnoty rozdílné
a>ba je větší než b
a>=ba je větší nebo rovna b
aa<=b

Přiřazovací podmínka ? :

Je to nejjednodušší rozhodovací konstrukce
proměnná=(výraz) ? h1 :h2

Pokud je výraz pravdivý nabude proměnná hodnotu h1, jinak h2

Podmínka if...else

if (výraz) proveď A
 else proveď B


pomocí závorek {} lze ohraničit posloupnosti příkazů jak za if, tak za else
if (vyraz) {
A
B
C
} 
else
{
E
F
}

Switch

Switch (proměnná)
{
  case h1:proved A;
  break;
  case h2:proved B;
  break;
  default:proved X;
}

Pomocí case provádí příkazy na základě možných hodnot proměnné. Break za každým příkazem slouží k přeskočení dalších příkazů.
Jinak by se postupně vykonávaly všechny příkazy.
Default slouží pro případ, že proměnná nenabývá žádné z daných hodnot.

Pro složitější rozhodovací konstruce slouží
Logické operátory
______________________________________________
VýrazVrací true, když
a&&bjsou oba výrazy pravdivé (jako and)
a||bje aspoň jeden výraz pravdivý (or)
!a je výraz nepravdivý (not - negace)

Zpět na menu
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Cykly:

do...while

Zajišťuje opakování příkazů dokud je splněna pomínka, která se vyhodnocuje až po provedení příkazů.
do
{
tělo cyklu
}
while (výraz)

while

Podobný cyklu do while s tím rozdílem, že podmínka se vyhodnocuje na začátku cyklu a pokud je splněna provede se tělo cyklu
while (vyraz)
{
tělo cyklu
}

for

Příkaz for se používá pokud je dopředu zním počet opakování cyklu.
for (inicializace proměnné;podmínkový výraz;aritmetická operace)
{
tělo cyklu
}

Kde inicializace znamená určení počáteční hodnoty proměnné, podmínkový výraz je výraz pro ukončení cyklu a aritmetická operace slouži ke změně této indexové proměnné. př.:
for (a=2;a<10;a+=2)
{
document.write(a+" ")
}

Tento cyklus vypíše sudé číslice od 2 do 10.

Príkaz continue-slouží k přeskočení výkonné části těla cyklu na začátek cyklu
!! Pozor, aby nebyl přeskočen výraz pro nastavení ukončovací podmínky - mohlo by dojít k nekonečné smyčce !!

Zpět na menu
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekty:


Objekty jsou logicky související bloky dat. Každý objekt obsahuje několik proměnných s informacemi o objektu neboli vlastností.
Objekty obsahují též funkce k provádění určitých činností - metody.
Přístup k vlastnostem a metodám je pomocí notace:
jmeno objektu.jmeno vlastnosti nebo jmeno objektu.jmeno metody
př.: document.bgcolor="red"; - je vlastnost
     document.write("ahoj"); - je metoda objektu document

Seznam některých objektů

Objekty jsou hiearchicky uspořádány. Jejich struktura se zve objektový model dokumentu (DOM)


Struktura objektů v javaScriptu
__________________________________
Window Navigator Date Math String
   |    |
History Location Document FramesPlugin
                   |
Form Image Images Link
  |
Button Checkbox Hidden Password Radio Reset Select Submit Text Textarea

Tato hiearchir má velký význam při zápisu vlastnosti či metody některého objektu musíme uvést všechny nadřazené objekty.
Např.: vybrano=window.document.form.checkbox.checked
Vyjímku tvoří všechny objekty pod objektem WINDOW, kdy objekt WINDOW LZE VYPUSTIT :)
Další pomůcku tvoří příkaz WITH, který zrychluje práci s objekty
Syntaxe:with (objekt) {
vlastnosti nebo metody
}

Např.:
with (document.form) {
reset();
checkbox.click();
}

Seznam objektů v JavaScriptu
______________________________________
ObjektPopisHtml ekvivalence
anchorUkotvení: řetězec obsahijící hypertextový odkaz v HTML dokumentu<a name>..</a>
appletJava applet<applet>..</applet>
areaOblast na klikací mapě<map>..<area>..</map>
ArrayPole proměnných
buttonvytvoří tlačítko &input type=button>
checkboxvytvoří zaškrtávací pole<input type=checkbox>
DateObjekt pro práci s datem a časem
documentObjekt s metodami s HTML dokumentem
formFormulář v HTML<form>..</form>
framePro vytváření rámů v okně prohlížeče<frame>..<frame>
hiddenUmožňuje přístup k e skrytým objektům v HTML dokumentu<input type=hidden>
historyObsahuje seznam URL, které uživatel navštívil
imageObjekt pro manipulaci s obrázky<img>
linkHypertextový odkaz<a href>..lt;/a>
locationV tomto objektu jsou umístěny informace o aktuálním URL
MathObjekt pro práci s matematickými funkcemi
navigatorObjekt obsahuje informace o prohlížeči
passwordVstupní textové pole pro zadání hesla<input type=password>
radiopřepínací tlačítko<input type=radio>
resetObjekt pro vymazání formuláře<input type=reset>
selectPomocí indexovaného pole lze přistupovat k položkám seznamu, nabídek...<select>..<option>..</select>
StringPro práci s řetězci
submitVytvoří tlačítko k odeslání formuláře<input type=submit>
textJednořádkové vstupní textové pole<input type=text>
textareaVíceřádkové vstupní textové pole<textarea>..</textarea>
windowObjekt, který představuje okno webového prohlížeče

Zpět na menu
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt navigator

Objekt navigator se používá k zjištění informací o použitém prohlížeči, což lze využít pro přizpůsobení skriptu.
VlastnostPopis
appCodeNameObsahuje jméno kódu na nemž je prohlížeč založen
appMinorVersionsubverze prohlížeče
appNameObsahuje jméno prohlížeče
appVersionObsahuje číslo verze prohlížeče a platformu, pro niž je určena
browserLanguagejazyk prohlížeče
cookieEnabledVrací logickou hodnotu podle uchovánvání Cookies
cpuClassprocesorová třída počítače na nemž běží prohlížeč
onLineVrací logickou hodnotu podle režimu Online/Offline
platformVrací název operačního systému na němž běží prohlížeč
systemLanguageimplicitně nastavený jazyk operačního systému
userAgentUdává text obsažený v hlavičce uživatelské složky poslané pomocí HTTP od klienta serveru
userLanguagepřirozený jazyk operačního systému
MetodaPopis
javaEnabled()vrací logickou hodnoty podle toho, zda je zapnuta podpora jazyka Java

Ukázka skriptu:
<script language=JavaScript>
<!--
  document.write("<b><u>Informace o prohlížeči:</u></b><br>);
  document.write("Jméno aplikace: "+navigator.appName+".
"); ... //--> </script>

Zpět na menu
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt document

VlastnostPopis
alinkColorbarva aktivních odkazů
all[]pole všech objektů tvořících dokument
anchors[]ople kotev tvořících dokument (a name=)
bgColorbarva pozadí v šestnáctkové soustavě
charsetaktuální kódování dokumentu
Cookieobsahuje textový soubor s uživatelským cookies
fgColorbarva písma v 16
forms[]pole formulářů tvořících dokument
images[]pole obrázků tvořících dokument
lastModifieddatum a čas poslední změny dokumentu
linkColorbarva odkazu v 16
links[]pole odkazů tvořících dokument
locationaktuální URL dokumentu
referrerURL dokumentu, ze kterého jsme se dostali na aktuální stránku
styleSheet[]pole kaskádových stylů
titletitulek dokumentu
URLURL aktuálního dokumentu
URLUnencodeddekódované URL aktuálního dokumentu
vlinkColorbarva navštíveného odkazu v 16
MetodaPopis
close()uzavře výstup do dokumentu
open()otevře vstup do dokumentu
write()zapíše data do dokumentu
writeln()po zápisu odřádkuje (nemusí funkgovat správně - lépe <BR> nebo \n)
getElementById(ID)vstupní hodnota elementu je ID, vrací odkaz na identifikovaný objekt tohoto elementu v DOM. viz.Příklady

Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt history

Uchovává informace o navštívených stránkách
NázevPopis
vlastnost lengthobsahuje počet navštívených stránek
metoda go(x)slouží k přechodu o x navštívených stránek vpřed, pro x>0 nebo zpět, pro x<0
metoda back()přechod na předchozí URL v historii
metoda forward()přechod na následující URL v historii

Zpět na menu
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt location

Objekt location slouží k načtení nové stránky. Pokud zadáme do vlastnosti
location.href=adresa existující adresu, otevře se nové okno s danou adresou. Používá se pro přesměrování stránek...

MetodaPopis
reload()znovu načtení aktuálního dokumentu
replace()nahradí aktuální dokument jiným
VlastnostPopis
hashřetězec začínající #, specifikuje název kotvy v URL
hostřetězec obsahující název hostitele a portu URL
hostnameřetězec obsahující název hostitele URL
hrefřetězec obsajhující URL adresu
pathnameřetězec obsahující část URL specifikující cestu
portřetězec obsahující čast URL - komunikační port
protocolřetězec obsahující protokolovou část URL
searchřetězec začínající ?, specifikující dotazovanou část URL

Zpět na menu
------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt Date

Objekt Date není součástí objektu document ani window, proto se musí nejdříve vytvořit:
datum=new Date(); Při vypsání datumu přímo pomocí Date(); {document.write(date());} je vypsán datum ve formátu:
1. den v týdnu 2. měsíc 3. datum 4. čas: hh:mm:ss 5. rok např.: Sat Nov 04 15:30:45 2002
což je značně nepřehledný formát, proto je výhodné využívat metody objektu Date.

MetodaPopis
getDate()den v měsíci
getDay()den v týdnu 0-6, kde 0=neděle
getHours()hodiny
getMinutes()minuty
getMillisecondsmilisekundy
getMonth()měsíc
getSeconds()sekundy
getTime()Počet milisekund od 1.1.1970
getYear()rok ve formátu rr pro rok<2000 jinak rrrr
getFullYear()rok rrrr
setDate...nastavuje jednotlivé položky
toStringvrací řetězec reprezentující datum

Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Stavový řádek

Editovat text ve stavovém řádku prohlížeče umožňuje objekt window.status.
status="text"; - zobrazí text v řádku - např. pro popis odkazů. Pro nahrazení standartního textu slouží defaultStatus="text" - nahradí hlášku např.:Hotovo textem.
Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt Array, Datová struktura pole

Pole se vytváří pomocí operátoru new.
var pole=new Array();
lze nastavit počet prvků: pole=new Array(5);
Indexy pole začínají nulou=>pole[0]..pole[pocet_prvku-1]
Pole v JavaScriptu není homogenní a může tedy obsahovat různé typy dat.
Přiřazování hodnoty do polo se děje pomocí selektoru - pole[0]=1;pole[1]=2... nebo hned při vytvoření pole pole=new Array(1,2,3,"ahoj",8); - pole bude mít 5 prvků
Zvětšení velikosti pole lze provést pomocí přiřazení do vyššího indexu, než je velikost pole.
Tedy naše pětiprvkové pole lze rozšířit na dvacetiprvkové například pomocí pole[19]=20;

MetodaPopis
concat(pole1,pole2...)přidá prvky jednoho pole do druhého-spojování polí:polex=pole1.concat(pole2,pole3...);
join(oddělovač)spojí prvky do jednoho řetezce, oddělené znakem v závorkách. Pokud není uveden užije se čárka
pop()odstraní poslední prvek z pole
push(prvkek/prvky)přidá jeden nebo více prvků na konec pole
reverse()Otočí pořadí prvků v poli
shift()odstraní prvek z pole
slice(odindx, doindexu)vrací část pole od odindx..doindexu-1
sort()setřídí prvky pole podle abecedy, jako parametr lze volat nějakou porovnávací fuknci
splice()odstraní určený počet prvků z pole a součesně přidá nové prvky
toStringkonvertuje prvky pole na řetězec prvků pole oddělených čárkou
unShift(prvek/prvky)přidá jeden nebo více prvků na začátek pole
valueOf()vrací pole prvků oddělených čárkou
VlastnostPopis
lengthudává počet prvků v poli

Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt event

viz.také
Události
Vlastnosti event.Popis
altKeyvrací true pokud je stisknuta klávesa ALT
buttonúdaj o tom, které tlačítko na myší je stlačeno: 0 - žádné, 1 - levé, 2 - pravé, 4 - prostřední
clientXx-ová souřadnice myši vzhledem k pracovní ploše prohlížeče
clientYy-ová souřadnice
ctrlKeyvrací true pokud je stisknuta klávesa CRTL
keyCodeklávesový kód UNICODE stisknuté klávesy
retutnValuenávratová hodnota události
screenXx-ová souřadnice kurzoru myši vhledem k obrazovce
screenYy-ová
shiftKeytrue pokud je stisknuta klávesa Shift
typetyp události která právě nastala


Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt window, práce s okny

Objekt window je na nejvyšší úrovni mezi
objekty, proto jej lze z výpisů vypouštět. Tetno objekt slouží pro práci s okny prohlížeče.

MetodaPopis
window.open()otevření nového okna
window.close()zavření okna
window.alert((zobrazí dialogové oknos tlačítkem Ok, které lze použít k zobrazení hlášení
window.confirm()zobrazí dialogové okno s tlačítky OK a Zrušit - vrací true nebo false
window.prompt()zobrazí dialogové okno pro zadání textu
window.focus()slouží k zaměření prvku, nebo utčení aktivního okna
window.blur()opak focusu - ztráta zaměření
clearInterval(id)zruší provedení příkazu zadaného v setInterval()
clearTimeout()zruší provedení příkazu uvedeného v setTimeout()
moveBy(x,y)posune okno o x pixelů vpravo a y dolů
moveTo()přesune okno na nové souřadnice
print()vytiskne obsah okna
resizeBy()změní obsah okna o x pixelů vpravo a y dolů
resizeTo()změní rozměr okna na x*z pixelů
scrollBy()odskrouje text doprava a dolů
scrollTo()posune obsah okna na určené místo
setInterval()určuje dobu mezi zavoláním funkce a vyhodnocením výrazu
setTimeout()Po zadaném počtu milisekund vyvolá funkci udanou v parametrech


VlastnostPopis
historyobsahuje informace o navštívených stránkách
locationje zde uložena adresa aktuální stránky
documentobjekt pro HTML dokument otevřený v okně
frameobsahuje informace o použitých rámech
defaultStatusje zde uložen standartní text stavového řádku (např. Hotovo)
frames[]pole, obsahující seznam rámů použitých v dokumetnu
lengthudává počet rámů v okně
namejméno okna
openerodkaz na okno, ze kterého bylo aktuální okno otevřeno
selfodkaz na aktuální okno
topnejvrchnější okno
parentodkaz na nadřazené okno
closedspecifikuje zda okno bylo otevřeno
offscreenBufferingspecifikuje zda aktualizace okna jsou vykonávány mimo obrazovku


Metoda open()

Metoda open obsahuje řadu parametrů k vytvoření okna:
open('URL dokumentu','jmeno okna{pro odkazy}', 'seznam atributů oddělených čárkou');
Např.:
open(' ', 'nove okno', 'height=300, width=300');
- otevře prázdné čtvercové okno.

Pokud zadáme: window.open(" ", "jmeno","atributy") - objeví se okno s obsahem aktuálního adresáře - kvůli mezeře v adrese

Atributy pro metodu open
AtributPopis
copyhistorykopíruje obsah historie původního okna do nového.
directorieszobrazuje či skrývá panel s tlačítky Co je nového - pouze pro prohlížeče Natscape.
fullscreen=yeszobrazí stránku na celou obrazovku - bez okna prohlížeče.
heightNastavuje výšku okna v pixelech.
leftNastavuje polohu levého okraje na obrazovce v pixelech.
locationZobrazuje nebo skrývá panel s URL adresou.
menubarZobrazí nebo skrývá panel nabídek.
resizableUmožňuje změnu velikosti onka.
scrollbarsPřidá k onku posuvníky.
statusZobrazí nebo skryje stavový řádek.
toolbarZobrazí nebo skryje panel nástrojů.
topNastovuje polohu horní hrany na obrazovce v pixelech.
widthNastavuje šířku okna.


U atributů, kde se neudávají pixely, se zadávájí dvě možné hodnoty: true - false, 0 - 1, yes - no. Pokud atribud neuvedeme, předpokládá se hodnota false.

Př.:
<Script language="JavaScript>
<!--
  function zavri()
   {
     if (confirm("Opravdu chcete zavrit toto okno"))
     {
      window.close
     }
   }
-->
</script>
< a href="" onClick="zavri()">Zavřít okno</a>

Dynamicky tvořené dokumenty

Pomocí JavaScriptu lze vytvořit nové okno, ale také nový dokument. Pomocí metody write lze zapisovat HTML značky a tím formátovat text v okně. např.:
var okno=window.open();
okno.dokument.write(<HTML>];
okno.dokument.write(<body bgcolor=#ccffffokno>];
okno.dokument.write(Vítejte na této stránce];
...


Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt screen


informuje o aktivování vyhlazování fontů
Vlastnost objektu screen.Popis
availHeightvrací dostupnou výšku pracovní plochy operačního systému v pixelech
availWidthdostupní šířka
colorDepthvrací barevnou hloubku
fontSmoothingEnabled
heightvertikální rozlišení obrazovky v pixelech
widthhorizontální rozlišení


Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Objekt string


Metoda objektu string.Popis
anchor(nazev kotvy)přidá do řetězce kotvu HTML
big()obklopí řetězec značkami <big> a </big> >zápis: retez.big(), kde retez="text"
blink()přidá značky
bold()přidá značky pro tučné písmo
charAt(n)vrátí n-tý znak řetězce
charCodeAt(n)vrátí číselnou hodnotu UNICODE kódu znaku
concat()spojí řetězce
fixed()přidá značky <TT>
fontcolor()nastaví barvu fontu řetězce
fontsize()nastaví velikost fontu řetězce
fromCharCode(kód1,kód2..)vrací řetězec vytvořený ze specifikovaných kódů Unicode
indexOf(podřetězec,od)určí pozici podřetězce
italics()přidá značky pro kurzívu
lastIndexOf(podřetězec,od)určí poslední pozici výskytu podřetězce v řetězci
link()přidá do řetězce hypertextové spojení
slice(od/od, do)vrací specifikovanou část řetězce
small()přidá značky
split(oddělovač{,limit})rozdělí řetezec na pole podřetězců
strike()přidá značky
sub()přidá značky
substr(od, počet)vrátí specifikovanou část řetězce
substring(od/od,do)vrátí specifikovanou část řetězce
suppřidá značky
toLowerCase()zkonvertuje řetězec na malá písmena
toString()vrací stejný řetězec
toUpperCase()konvertuje řetězec na velká písmena
Vlastnostpopis
lengthpočet znaků v řetězci


Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Události

Události umožňují spučtění skriptu až při vykonání určité akce. Nemusí se zapisovat mezi <script>..</script>
Zápis události:událost="příkaz";

UdálostPopis
onMouseOverudálost je vyvolána pokud najede kurzor myši nad dané místo(větš. odkaz)
onClickprovedení skriptu po klikutí na místo
onDblClickdvojklik tlačítkem myši
onFocusvyvolání události při zaměření prvku (stane se aktivním)
onBluropak-pokud prvek přestane být aktivní
onChangepokud je změněn obsah prvku (např.:textového pole)
onSelectpo vybrání textu v poli
oLoadpo nahrání dokumentu
onUnloadpři opuštění stránky
onErrorpokud nastane chyba
onAbortpo přerušení načítání stránky - stisknutím ZASTAVIT na prohlížeči
onResetpři resetovíní formuláře
onSubmitpři odeslání formuláře
onKeyPresspo stisku klávesy (stlačení a uvolnění)
onKeyDownpo stlačení klávesy
onKeyUppo uvolnění stlačené klávesy
onDblClickpo dvojkliku na daný prvek
onMouseDownpo stisknuti lib. tlačítka myši
onMouseMovepři pohybu kurzoru
onMouseOverpo odtažení kurzoru z objektu
onMouseUppo uvolnění tlačítka myši
onResizepo změně velikosti aktuálního okna či rámce

<span> slouží k aplikaci událostí na běžný text (a ne jen na odkaz či obrázek)
Pozor na uvozovky: Jelikož se jedná o několik vnořených urovní příkazů je nutné odlišovat uvozovky.
První jsou klasické uvozovky, dále jsou uvozovky nahrazeny apostrofy a nižší úroveň se zapisuje bez uvozovek.

Příklady skriptů s událostmi:
<body>
Po najetí myší nad tento <A href="x.html" 
 onMouseOver="window.status='Odkaz na stránku x.html';return true"> odkaz </a> 
 se vypíše adresa ve stavovém řádku
</body>
return true určuje jak se bude chovat odkaz po odtažení kurzoru. Return true blokuje stavový řádek pro správce událostí onMouseOver
pokud nebude uveden, může dojít k nechtěnému výsledku - vyzkoušet
<A href="x.thml" onClick="alert('Chystáte se opustit tuto stránku')">x</a>

<form> <input type="text" size=30 onFocus="window.status='Zadejte jméno'"> </form>
< body onlLoad="alert('ahoj')> ...
<span onClick="document.write('odpoved <form><input type=button value=zpet onClick=history.go(-1)> </form>')"> Otazka?</span>

Tento krátký skript umožňuje vytvořit jednoduchý kvíz, kdy se na stránku vypíše otázka a po kliknutí na ni se otevře nové okno s odpovědí a tlačítkem Zpět.
Použití dokument.write() otevírá nové okno.
Je zde také použito všech tří úrovní příkazů - u history, value.. již bez uvozovek

Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Funkce:


Funkce jsou pojmenované bloky příkazů, definované před jejich použitím v programu. Funkce jsou volány jejich jménem a případně parametrem.
Formální parametr funkce je parametr u hlavičky funkce a je při průběhu funkce nahrazen skutečným parametrem, který je zapsán ve volání funkce
Uvnitř funkce lze definovat nové proměnné, které jsou z jiného místa programu nedostupné.
viz.
Lokální a globální proměnné

Vytvoření funkce: - funkce se zpravidla definují v sekci <HEAD>..</HEAD>
function Jmeno();
{
seznam příkazů
}

V závorkách za jménem funkce lze vypsat případné parametry.
<head>
<script language="JavaScript">
<!--
 function Datum()
  {
    var datum=new Date();
    var d=datum.getDate();
    var m=datum.getMonth();
    var r=datum.getYear();
    var dnes="Dnes je "+d+" "+m+" "+r+".";
 
    window.status=dnes;
  }
//-->
</script>
</head>

Tato funkce nedělá nic jiného, než je vypsání datumu do stavového řádku prohlížeče.

Funkce s návratovou hodnotou
Jsou funkce, které vrací hodnotu uloženou v nějaké proměnné, která pak může být zpracována mimo tuto funkci.
Např.: pokud budeme chtít vypsat satum v určitém místě dokumentu.

K vrácení hodnoty slouží příkaz return jméno_proměnné
Pokud si definujeme funkci:
<head>
<script language="JavaScript">
<!--
 function Datum()
  {
    var datum=new Date();
    var d=datum.getDate();
    var m=datum.getMonth();
    var r=datum.getYear();
    var dnes="Dnes je "+d+" "+m+" "+r+".";
 
    return dnes;
  }
//-->

můžeme pak použitím např. documet.write(Datum()); zapsat kdekoli obsah proměnné dnes.

Funkce s parametry
Parametry funkce zapisujeme do závorek za jméno funkce. Počet parametrů pak musíme dodržet při voláí funkce.
Např. funkce pro změnu barvy odkazu po najetí kurzorem na odkaz může vypadat takto:
<script language="JavaScript">
<!--
 function nastav(barva1,barva2)
  {
   document.linkcolor=barva1;
   documet.vlinkcolor=barva2;
   return true;
  }
//-->
Pak pro změnu barvy odkazu stačí napsat skript:
<A href="x.html" onMouseOver="nastav('red','lime')" onMouseOut="nastav('blue','yellow')">Odkaz</a>

Potom se změní barva po najetí na odkaz va červenou nebo světle zelenou a p odtažení kurzoru na modrou nebo žlutou

FunkcePopis
escape()zakóduje řetězec pro přenos
eval()provede kód JavaScriptu nacházející se v řetězci
isFinite()zkontroluje zda je zadaný argument konečné či nekonečné číslo
isNaN()zkontroluje zda je argument číslo
parseFloat()koverzuje řetězec na číslo
parseInt()konverzuje řetězec na celé číslo
unescape()dekóduje řetězec zakódovaný pomocí escape

Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Triky s obrázky

V HTML se obrázky umisťují do dokumentu pomocí tagu <IMG>, kde lze nastavit řadu patrametrů. Důležitým parametrem pro práci s obrázky je atribut NAME
Pak lze k nějaké události přiřadit obrázek pomocí document.jmeno_obrazku.src="soubor";
Např.:
<A href=x.html onMouseOver="document.odkaz.src='obr1.jpg'" onMouseOut="dokument.odkaz.scr='obr2.jpg'">
<IMG src="obr2.jpg" name=odkaz></a>

Na stránce se objeví odkaz v podobě obrázku obr2.jpg, který se po najetí myší nad obrázek změní na obr1.jpg

Ovšem tento skript mí jednu nevýhodu - po prvním najetí nad odkaz, bude chvíli trvat, než se obrázek změní. A to proto, že se obrázek teprve začne načítat do paměti počítače z místa uložení.
Toto zdržení lze snadno odstrannit pokud si obrázky načteme do paměti již před samotným použitím.
Provede se to použitím objektu Image v záhlaví dokumentu
Nový objekt se musi vytvořit: obr=new Image(šířka,výška);
Do takovéto proměnné lze pak uložit obrázek pomocí: obr.src="obrazek.jpg";

K předchozímu skriptu přibude jen:
<head>
<script language=javascript>
<!--
  obraz1=new Image(300,30);
  obraz1.src="obr1.jpg";
  obraz2=new Image(300,30);
  obraz2.src="obr2.jpg";
//-->
</script>
</head>

V samotném odkazu pak lze použík jak skutečná jména obrázků "obr1.jpg" a "obr2.jpg", tak proměnné obraz1 a obraz2 - bez uvozovek, kvůli obsahu roměnných.


Dále existuje vlastnost document.images[], které funguje jako pole všech obrázků v aktuálním dokumentu - indexováno od nuly!!!
Popřípadě lze kromě čísel použít document.images["name"], kde name je jméno uvedené v <Img name="jmeno">
př.:-nejdříve si nadefinujeme potřebné obrázky (viz. výše)
a vytvoříme si funkce:
function rozsvit(obr)
{
 document.images[obr-1].src="obr"+obr+"zap.jpg";
}

function zhasni(obr)
{
  document.images[obr-1].src="obr"+obr+"vyp.jpg";
}
//-->>
</script>

Pak v odkazu napíšeme:
<A href=x.html onMouseOver="rozsvit(1)" onMouseOut="zhasni(1)"><Img src="obr1vyp.jpg"></A>

Po najetí nad obrázek se obrázek změní na "obr1zap.jpg".
Nebo lze vztvořit jinou funkci:
function zamen(nazev,soubor)
{
  document.images[nazev].src=soubor;
}
A bude volána:
<A href=x.html onMouseOver="zamen('obrazek','obr1zap.jpg')" 
onMouseOut="zamen('obrazek','obr1vyp.jpg')"><Img src="obr1vyp.jpg" name="obrazek"></A>

Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Formuláře

Formuláře se v HTML definují tagy <FORM> a </form> s atributem name="jméno formuláře"
Dalším atributem je METHOD, který určuje způsob odeslání dat z formuláře. Často method=post nebo method=get
Atribut ACTION obsahuje URL kam budou data odeslána. Často to bývá CGI skript nebo i emailová adresa.
ENCTYPE udává způsob kódování během přenosu. ENctype="text/plain" - čistý text

Do formuláře lze zařadit některé ovládací prvky:
Jednotlivé prvky se vkládají značkou <INPUT TYPE="typ prvku" NAME="jméno prvku" VALUE="hodnota">

Tlačítka
<input type="button" name="tlačítko" value="Stiskni" onClick="document.bgColor='#ccffff' ">


Dvě definovaná tlačítka jsou Odeslat(Submit) - <input type=submit>, a smazat(reset) - <input type=reset>
Kde submit slouží k odeslání formuláře, lze využít událost onSubmit, a reset slouží k smazání obsahu formuláře.


Editační řádka
Podobné textové pole jako pomocí prompt, lze vytvořít pomocí formuláře:
<input type="text" name="radek"  value="zadaný text" length="15" maxlength="20">

Atribut lenght udává délku textového pole, maxlength udává maximální počet znaků, jež lze vložit.
Length lze nahradit atributem SIZE

Zpracovat zadaný text ve skriptu znamená získat nejdříve obsah editační řádky. Toto lze získat vlastností value daného prvku.


Zaškrtávací políko
<input type="checkbox" name="políčkoo" checked="true">

Atribud CHECKED značí zda bude políčko zaškrtnuto či nikoliv


Textové pole
ltTEXTAREA COLS=20 name="jmeno" ROWS=5 wrap="virtual" > Text </textarea>

Cols značí počet sloupců pole, rows počet řádků, wrap určuje způsob zalamování textu. Může nabývat tří hodnot:
off - vypnuto zalamování, text ujíždí mimo pole
virtual - řádky které přesahují jsou rozděleny na více řádků. Znak konce řádku se vloží až po stisknutí ENTERU
physical - přesahující text je umístěn na další řádek a každý řádek je ukončen znakem konce řádku.



Přistup k formulářům pomocí pořadových čisel
Každému formuláři na stránce je přiřazeno pořadové číslo počínaje 0. K formuláři se pak přistupuje pomcí
document.forms[pořadové číslo]
Každému prvku formuláře je přiřazeno pořadové číslo od 0. K prvkům pak přistupujeme
document.forms[poradove cislo formulare].elements[poradove cislo prvku]
Toto lze zpřehlednit použitím atributů name u každého prvku. Pak lze místo volání přes pořadová čísla použít přímo jména prvků. Např.:
document.formular.radek.value - kdy získáme hodnotu v editační řádce


Formulářové funkcePopis
document.form.reset()inicializuje formulář
document.form.submit()odesílání formuláře
document.form.prvek.focus()aktivace pohledu na prvek
document.form.prvek.blur()deaktivace pohledu na prvek
document.form.prvek.select()označení obsahu prvku prvek


Rozevírací nabídka
Pro rozevírací nabídku existuje párový tag <SELECT>
Mezi tyto značky je umístěn seznam položek mezi jednotlivé značky <OPTION>
Příklad nabídky:
<form>
<select>
<option>polozka1</option>
<option>polozka2</option>
<option>polozka3</option>
</select>
</form>


<select> má řadu atributů. Nejdůležitější z nich je name pro snadný přístup ve skriptech a SELECTED, který určuje položku, která má být automaticky vybrána.
Pro zjištění výběru slouží vlastnost selectedIndex (místo value), která vrací index položky, která byla vybrána. První položka má index 0.

Výběrový seznam
Výběrový seznam je podobný rozevírací nabídce, ale zabírá několik řádků, a může obsahovat svislý posuvník.
Definice seznamu je opět mezi značkami <SELECT> doplněnými o atribut SIZE=x, který udává počet řádků seznamu.
<select size=3>
<option>polozka1</option>
<option>polozka2</option>
<option>polozka3</option>
<option>polozka4</option>
<option>polozka5</option>
<option>polozka6</option>
</select>
</form>




U seznamů lze jednotlivým položkám přiřadit určitou hodnotu pomocí
<Option VALUE="hodnota">Prvnipolozka</option>
Tuto hodnotu lze pak získat pomocí:document.form.select.options[index].value


Seznam s vícenásobným výběrem
Tento typ seznamu umožňuje vybrat více než jednu položku najednou. Definice je stejná jako u výběrového seznamu s tím, že značka SELECT je doplněna o atribut MULTIPLE. Pak lze pomocí kláves Ctrl a Shift označit více položek.

Nastává problém, jak určit které položky jsou vybrány a které ne. K tomuto je určena vlastnost selected v objektu options[].
Tato vlastnost vrací TRUE, pokud je položka vybrána a FALSE, pokud není.
Nejdříve si tedy zjistíme, jestli je položka vybrána a pak získáme její hodnotu:
 if (document.form.select.options[index].selected)
 { 
  hodnota=document.form.selected.options[index].value
 }


Příklady formulářů:
<script language="javascript">
<!--
function vypis()
{
 alert("Zadali jste text: "+document.formular.radek.value+". ");
}
//-->
</script>


<Form name="formular">
<Input type="text" name="radek" length="20" value="Napište text" 
  onfocus="document.formular.radek.select()"><br>
<Input type="button" name="tlac1" value="OK" onClick="vypis()">

========================================================================================
<script language="javascript">
<!--
function zmen(barva)
{
if (document.formularek.pozadi.checked) document.bgColor=barva;
else document.fgColor=barva;
}
//-->
</script>

<Form name="formularek">
Změnit barvu pozadí:
<Input type="checkbox" name="pozadí" checked="true"><br>
<Input type="button" name="modrá" value="modrá" onClick="zmen('blue')">
<Input type="button" name="oranžová" value="oranžová" onClick="zmen('#FF8040')">


Změnit barvu pozadí:
========================================================================================
<script language=javascript>
<!--
function potvrdit()
{
OpenWindow=window.open("", "hlašení", "height=300, width=300");
OpenWindow.document.write("<HTML>");
OpenWindow.document.write("<Title>Děkuji za Váš dopis</title>");
OpenWindow.document.write("<body bgcolor='#ccffcc'>");
OpenWindow.document.write("Vaše zpráva:<br><i>"+formularzpravy.textzpravy.value+" </i><p>byla 
odeslana autorovy na adresu <b>mujmail@atlas.cz</b>nyní se již můžete těšit na odpověd");
OpenWindow.dokument.write("<center>");
OpenWindow.dokument.write("<form><input type='button' value='Zavřít' onClick='self.close()'></form>");
OpenWindow.dokument.write("</center>");
OpenWindow.dokument.write("</html>");

}

function akce()
{
komu="mailto:mujmail@atlas.cz?Subject=Pozdrav od "+document.odkoho.jmeno.value+"
 ("+document.odkoho.adresa.value+") ";
return komu;
}
//-->
</script>

<form name="odkoho">
<b>Vaše jméno:</b>
<input name="jmeno" SIZE=40 type="text" onChange="document.formularzpravy.action=akce()">
<br>
<b>Váš E-mail:</b>
<input name="adresa" size=40 type="text" onChange="document.formularzpravy.action=akce()">
</form>
<br>

<form method="post" action="mailto:mujmail@atlas.cz?Subject=Pozdrav pro autora" 
enctype="text/plain" name="formularzpravy" onSubmit="potvrdit()">
<b>Zde napište text pozdravu:</b><br>
<textarea cols=40 rows=5 name="textzpravy"></textarea><p>
<input type="submit" value="odeslat" >
<input type="reset" value="smazat">
<input type="button" value="potvrdit" onClick="potvrdit()">
</form>
Vaše jméno:
Váš E-mail:

Zde napište text pozdravu:

Zpět na menu:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Matematika a počty v Javascriptu - Objekt Math


Pro základní počty slouží
aritmetické operátory.
Při počítání je třeba dávat pozor, zda prohlížeč ví, že pracuje s čísly. Pokud budeme například načítat dvě čísla z editačních řádek, a jejich součet zapíšeme přímé ve funkci document.write(cislo1+cislo2);, vypíšou se daná čísla za sebou, protože prohlížeč si myslí, že se jedná o text.

Proto je nutné provést konverzi na čísla. K tomuto slouží meotda eval().
Pokud tedy zapíšeme cislo1=exal(textová řetězec); je cislo1 opravdu číslem (pokud je správný textový řetězec).
Další funkce jsou:
parseInt() - převádí řetězec na celé číslo
parseFloat() - převádí řetězec na reálné číslo

Mimo tyto možnosti existuje i automatická konverze - pokud pro proměnnou použijeme operátor cislo++ dojde k automatickému převedení na číslo o 1 vyšší, pak původní číslo získáme cislo--.

MetodyPopis
abs()absolutní hodnota čísla
acos()arcus kosinus čísla
asin()arcus sinus
atan()arcus tangens
atan2(x,y)vypočte úhel od osy x do určeného bodu
ceil()zaokrouhlí číslo nahoru
cos()kosinus
exp()vrací hodnotu e na x, kde x je zadáno
floor()zaokrouhlí číslo dolů
log()přirozený logaritmus z čísla
max()vrací větší ze dvou zadaných čísel
min()menší ze dvou zadaných čísel
pow()vrací x na y, kde obě čísla jsou zadána
random()vrací náhodné číslo v rozsahu 0 - 1
round()zaokrouhlené číslo
sin()sinus čísla
sqrt()vrací odmocninu čísla
tan()tangens čísla
VlastnostiPopis
Eeulerovo číslo (2,71828182)
PILudolfovo číslo (3,14159265)
LN2přirozený logaritmus ze 2
LOG2Elogaritmus o základu 2 z E
LN10přirozený logaritmus z 10
LOG10Edekadický logaritmus z E
SQRT1_2odmocnina z 0,5
SQRT2odmocnina z 2



Zpět na menu:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Časovač

Časovač se do skriptu přidáva pomocí funkce setTimeout(). Tato funkce má dva parametry.
Příkaz, který se má provést, a prodleva v milisekundách, pro vykonání příkazu
Zápis tedy vypadá např.: setTimeout("příkaz", 100);
Použití časovaču se používá k přesměrování stránek za určitou časovou prodlevu, nebo k opakovanému načtení stejné stránky, kvůli aktualizaci. Řádek takového skriptu bude vypadat:setTimeout("location.href='stranka.html' ",5000);
Často se zapisuje do sekce <BODY> pro událost onLoad

Zastavení časovače časovač lze zastavit pomocí metody clearTimeout(jméno_časovače);
Takže pokud použijeme prodleva=setTimeout("location.href='stranka.html' ",5000); lze vytvořit např. tlačítko k zastavení použitím clearTimeout(prodleva);

Časovač lze dobře využit pro vytvoření hodin na stránce, kdy pomocí časovače budeme každou vteřinu volat funkci na zobrazení času -pomocí rekurze.


<script language="Javascript">
<!--
function format(cas)
{
if (cas<10) return ("0"+cas)
else return (cas)
}

function ukazCas()
{
ted=new Date;
hodiny=ted.getHours();
minuty=ted.getMinutes();
sekundy=ted.getSeconds();
ccas=" "+format(hodiny)+":"+format(minuty)+":"+format(sekundy);
return ccas;
}

function hodiny()
{
document.hodiny.cas.value=ukazCas();
setTimeout("hodiny()",1000); 
}

//-->
</script>

<form name="hodiny">
<input type="button" name="cas" value="Kliknutím spustíte hodiny" onClick="hodiny()">
</form>

Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hudba:

Pro přehrávání hudby se používá nejčastěji Windows Media Player. Pro přidání modulu přehrávače do dokumentu slouží párová značka <EMBED>. Pro případ, že není příslušný modul nainstalován je vhodné použít párovou značku <NOEMBED> a uzavřít do ní příslušný text.
Embed má ředu parametrů :
name pro určení jména
SRC pro načtení zvukového souboru
Autostart=true/falsenastavení automatického přehrávání po načtení stránky
Height, Widthurčení rozměrů
Loop=true/falsepovolení opakovaného přehrávání (monžno použít REPEAT)
hidden=true/falseskryje přehrávač


Nejčastěji používané funkce jsou play() a stop()
Pak můžeme vytvořit tlačítko pro zapnutí hudby, kde se po kliknutí provede příkaz:
onClick="document.namePrehravace.play()"


Zpět na menu
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Cookies

dodělat -------------------------------------------------------------------------------------------------------------------------------------------------------------------
Klíčová slova:
____________________________
abstractalertargumentsArray
blurboolean Boolean break
bytecalleecaptureEventscase
catchcharclassclearInterval
clearTimeoutcloseclosedconfirm
constconstructorcontinueDate
debuggerdefaultdeaultStatusdelete
dodocumentdoubleelse
enumescapeevalexport
extendsfinalfinallyfind
floatfocusforframes
functiongotohistoryhome
ifimplementsimportin
InfinityinnerHeightInerWidthinstanceof
intinterfaceisFiniteisNaN
javalengthlocationlocationbar
longMathmenubarmoveBy
moveTonameNaNnative
netscapenewnullNumber
ObjectopnopenerouterHeight
outerWidthpackagepageXOffsetpageYOffse
parentparseFloatparseIntprint
privatepromptprotectedprototype
publicRegExpreleaseEventsresizeBy
resizeToreturnrouteEventscroll
scrollbarsscrollByscrollTosetInterval
setTimeoutshortstaticstatus
statusbarstopStringsuper
switchsynchronizedthisthrow
throwstoolbartoptransient
trytypeofunescapeunwatch
valueOfvarvoidwhile
windowwithfalsetrue

Zpět na menu:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Příklady:


1)
<HTML>
<HEAD>
<Script type=text/javascript">
function zmenstr()
{
  open(document.getElemetById("Zvolstr").value,"Nova Stranka"); 
  /* funkce otevře novou stránku, URL je získána jako první parametr metody open.
     getElementByID("Zvolstr") vrací formulář a nabídku select označenou ID=Zvolstr 
     Open dále čte vybranou hodnotu (value) z vráceného objektu */
}
</Script&gr;
</head>
<BODY bgcolor=black text=white>

Vyberte stranku:
<FORM>
<SELECT id="Zvolstr" onChange="zmenstr()">
<OPTION value="pes.html selected>Pes Azor</OPTION>
<OPTION value="kocka.html>Kocka</OPTION>
<OPTION value="kralik.html>Kralik</OPTION>
</SELECT>
</FORM>

</BODY>
</HTML>


2)
<BODY>
<IMG SRC="OBRAZ.GIF" style="filter:Alpha(opacity=50); -Moz-opacity=0.5"
  onMouseOver="this.style.filter='Alpha(opacity=100)'; this.style.MozOpacity=1"
  onMouseOut="this.style.filter='Alpha(opacity=50)'; this.style.MozOpacity=0.5">
</BODY>

-filter nastavuje průhlednost obrázku, která se mění po najetí myší


Zpět na menu:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------