┌vod KaskßdovΘ styly Ukßzky © Ji°φ Kosek
DynamickΘ HTML

JavaScript

JavaScript je jednoduch² programovacφ jazyk, kter² je mo₧no zapisovat p°φmo do HTML strßnky. Pochßzφ z v²vojß°skΘ dφlny firmy Netscape, ale dnes ho podporuje i Internet Explorer.

P°φΦinou vzniku JavaScriptu byl po₧adavek na zv²Üenφ u₧ivatelskΘho komfortu pro u₧ivatele strßnek. JavaScript m∙₧eme pou₧φt nap°φklad p°i vstupnφ kontrole dat vklßdan²ch do formulß°∙ jeÜt∞ p°edtφm, ne₧ jsou vypln∞nΘ ·daje odeslßny na server. Kontrolu ·daj∙ nemusφ provßd∞t server a v²sledkem je rychlejÜφ odezva pro u₧ivatele. JavaScript ve sv²ch prvnφch verzφch navφc umo₧nil i vytvß°enφ interaktivn∞jÜφho u₧ivatelskΘho rozhranφ strßnek. Strßnka mohla reagovat na r∙znΘ udßlosti vyvolanΘ u₧ivatelem a nap°φklad dopl≥ovat pole do formulß°∙ nebo vyvolat otev°enφ novΘho okna prohlφ₧eΦe. Tyto mo₧nosti pak dßle rozÜφ°il nov² koncept dynamickΘho HTML.

My se nynφ struΦn∞ seznßmφme se zßklady programovßnφ v JavaScriptu. PotΘ si ukß₧eme, jak se skripty (tak se °φkß program∙m v JavaScriptu) za°azujφ do HTML strßnky. V poslednφ Φßsti se podφvßme na to, jak jsou v JavaScriptu p°φstupnΘ jednotlivΘ komponenty prohlφ₧eΦe a strßnky pomocφ objektovΘho modelu dokumentu (DOM).

JavaScript za dev∞t a p∙l minuty

JavaScript je velice jednoduch² jazyk. I p°esto nem∙₧eme na tomto omezenΘm prostoru postihnout vÜechny jeho vlastnosti. Zmφnφme se tedy proto jen o t∞ch nejpodstatn∞jÜφch. Zßjemce o podrobn∞jÜφ informace odkß₧eme na specializovanΘ knihy, kterΘ se v∞nujφ problematice JavaScriptu na n∞kolika stech stran. V souΦasnΘ dob∞ je na trhu ji₧ n∞kolik takov²ch knih i v ΦeskΘm jazyce.

Ka₧d² program se sklßdß z p°φkaz∙, kterΘ se provßdφ sekvenΦn∞ v po°adφ, v jakΘm jsou zapsßny. jednotlivΘ p°φkazy se od sebe odd∞lujφ st°ednφkem a je dobr²m zvykem psßt ka₧d² p°φkaz na samostatnou °ßdku -- program je pak mnohem p°ehledn∞jÜφ.

V programech m∙₧eme pou₧φvat prom∞nnΘ, kterΘ slou₧φ k ulo₧enφ r∙zn²ch hodnot podle naÜich pot°eb. Prom∞nnΘ nenφ pot°eba p°edem deklarovat, ale je to lepÜφ. Deklarace prom∞nnΘ se uvozuje klφΦov²m slovem var:

var Pocitadlo = 0;
var PocetMesicu = 12;
var i, j;
var Pozdrav = "Ahoj Karle!";
var Nalezeno = false;
V naÜem p°φklad∞ jsme deklarovali Üest prom∞nn²ch. Prvnφ dv∞ z nich jsme ji₧ p°φmo inicializovali poΦßteΦnφ hodnotou. Nßzvy prom∞nn²ch by se m∞ly sklßdat z pφsmen, Φφslic a podt₧φtek. Prvnφ pφsmeno nßzvu p°itom nesmφ b²t Φφslice. JavaScript rozliÜuje velikost pφsmen v nßzvech. Prom∞nnΘ Pocitadlo a POCITADLO jsou tedy dv∞ r∙znΘ.

Prom∞nnΘ mohou obsahovat jeden ze t°φ typ∙ dat -- Φφslo, textov² °et∞zec a logickß hodnota. Logickß hodnota odpovφdajφcφ pravd∞ se jmenuje true. Nepravd∞ odpovφdß hodnota false.

Mezi nejjednoduÜÜφ p°φkazy pat°φ p°i°azovacφ p°φkaz. Jeho tvar

prom∞nnß = v²raz
Do prom∞nnΘ se p°i°adφ hodnota v²razu uvedenΘho na pravΘ stran∞. V²raz m∙₧e obsahovat prom∞nnΘ a konstanty r∙zn∞ pospojovanΘ pomocφ operßtor∙.

K dispozic jsou samoz°ejm∞ b∞₧nΘ operßtory jako '+' (sΦφtßnφ), '-' (odΦφtßnφ), '*' (nßsobenφ) a '/' (d∞lenφ).

delta = y - x;
obvod = 2 * 3.14 * polomer;
palce = centimetry / 2.54;
Pokud chceme obsah n∞jakΘ promm∞nnΘ zv²Üit nebo snφ₧it o jedniΦku, m∙₧eme pou₧φt operßtor '++' nebo '--'. Nßsledujφcφ dva p°φkazy jsou ekvivalentnφ:
x = x + 1;
x++;
ZestruΦn∞nφ zßpisu n∞kter²ch operacφ je mo₧nΘ i pomocφ dalÜφch "vychytßvek". JavaScript obsahuje i operßtory '+=', '-=', '*=' a '/='. Jejich v²znam bude z°ejm² z ukßzky, kterß op∞t obsahuje dva p°φkazy, kterΘ majφ stejn² efekt.
PoziceX = PoziceX + KrokX;
PoziceX += KrokX;
Pokud zapisujeme logickΘ v²razy, m∙₧eme pou₧φt n∞kolik relaΦnφch a logick²ch operßtor∙. Pro porovnßnφ je v JavaScriptu operßtor '=='. Hodnota v²razu (3+2)==5 je tedy true. Pokud chceme testovat nerovnost, pou₧ijeme operßtor '!='.

Pro porovnßvßnφ hodnot mßme k dispozici relaΦnφ operßtory '<', '>', '<=' a '>='.

LogickΘ v²razy m∙₧eme navzßjem spojovat pomocφ logick²ch spojek '&&' (a zßrove≥) a '||' (nebo). Negaci v²razu provedeme zapsßnφm vyk°iΦnφku '!' p°ed jeho zaΦßtek.

JeVIntervalu = (x >= DolniMez) && (x <= HorniMez);
B∞h programu m∙₧eme ovliv≥ovat pomocφ podmφn∞n²ch p°φkaz∙. Jejich tvar je nßsledujφcφ:
if (podmφnka) {
    p°φkazy, kterΘ se provedou p°i spln∞nφ podmφnky
    }
else {
    p°φkazy, kterΘ se provedou p°i nespln∞nφ podmφnky
    }
╚ßst else je nepovinnß a nemusφ se tedy pou₧φvat. podmφnka je libovoln² v²raz, jeho₧ v²sledek je true nebo false.
if (hodina > 12) {
    hlaseni = "DobrΘ odpoledne!";
    }
else {
    hlaseni = "DobrΘ rßno!";    
    }
Pokud se mß podmφn∞n∞ provΘst pouze jeden p°φkaz, nemusφme jej uzavφrat do slo₧en²ch zßvorek:
if (hodina > 12) 
    hlaseni = "DobrΘ odpoledne!"
else 
    hlaseni = "DobrΘ rßno!";
Pokud pot°ebujeme n∞kolik p°φkaz∙ provΘst opakovan∞, m∙₧eme s v²hodou pou₧φt cykl∙. JavaScript nabφzφ n∞kolik typ∙ cykl∙, my se seznßmφme s cyklem for a while.

Cyklus for mß tvar:

for (poΦßteΦnφ inicializace; podmφnka; inkrementace) {
    p°φkazy
    }
PraktickΘ pou₧itφ si ukß₧eme na programu, kter² spoΦφtß hodnotu faktorißlu z Φφsla n:
var i,
    faktorial = 1;

for (i=1; i<=n; i++) {
    faktorial *= i;
    }
Cyklus while mß syntaxi jeÜt∞ jednoduÜÜφ:
while (podmφnka) {
    p°φkazy
    }
P°φkazy uvedenΘ v t∞le cyklu se provßdφ, dokud je spln∞na podmφnka. Musφme si tedy dßt pozor na to, aby podmφnka zßvisela na n∞jakΘ prom∞nnΘ, kterou m∞nφme uvnit° cyklu. Jinak se nßm m∙₧e stßt, ₧e zφskßme nekoneΦnou smyΦku.

Velice u₧iteΦnou pom∙cku nabφzφ JavaScript v mo₧nosti definovat si vlastnφ funkce. Funkce pou₧ijeme v p°φpadech, kdy pot°ebujeme v programu na r∙zn²ch mφstech provßd∞t stejnΘ Φinnosti. Pou₧itφm funkcφ k≤d programu zkrßtφme, zp°ehlednφme a p∙jde snadn∞ji modifikovat. Definujme funkci pro v²poΦet faktorißlu. Funkce bude navφc rekurzivnφ, proto₧e bude volat sama sebe:

function Faktorial(n) {
    if ((n==1) || (n==0)) 
        return 1 
    else 
        return (n * Faktorial(n-1));
    }
Takto definovanou funkci m∙₧eme pou₧φt pro vypsßnφ tabulky faktorißl∙ od 1 do 10:
var i;
for (i=1; i<=10; i++) {
    document.writeln(i, "! = ", Faktorial(n));
    }
Jako v²sledek dostaneme tabulku:
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
Funkce vracφ hodnotu, kterß je uvedena za slovem return. Funkce nemusφ vracet ₧ßdnou hodnotu, pak ji pou₧φvßme jako samostatn² p°φkaz a ne jako Φßst v²razu.

Funkce m∙₧e mφt i vφce parametr∙, odd∞lujφ se pak Φßrkou.

V poslednφ ukßzce se objevila konstrukce document.writeln. Tento zßpis specifikuje vyvolßnφ metody writeln u objektu document. Popis objekt∙ vß₧φcφch se k prohlφ₧eΦi a strßnce uvedeme na konci tohoto Φlßnku. JavaScript vÜak obsahuje i n∞kolik objekt∙, kterΘ s HTML v∙bec nesouvisφ. Jednß se objekty String, Date a Math. Ty umo₧≥ujφ prßci s °etezci, s ·daji o datu a Φase a s matematick²mi funkcemi.

ObvodKruhu = 2 * Math.PI * Polomer;
c = Math.sqrt(a*a+b*b);   // d∙sledek Pythagorovy v∞ty
Druhß °ßdka obsahuje ukßzku komentß°e. VÜe za znaky '//' a₧ do konce °ßdky se ignoruje a pova₧uje se pouze za komentß°, kter² vysv∞tluje v²znam programu.

Zakomponovßnφ JavaScriptu do HTML

Podφvejme se nynφ na prost°edky, kterΘ nßm HTML nabφzφ pro vklßdßnφ skript∙ do strßnek. Skripty m∙₧eme v zßsad∞ rozd∞lit na dv∞ skupiny: Skript se do strßnky vklßdß pomocφ pßrovΘho elementu SCRIPT. Skript m∙₧eme vlo₧it do strßnky bu∩ p°φmo nebo uvΘst pouze odkaz na URL, kterΘ obsahuje program v p°φsluÜnΘm skriptovacφm jazyce. Pro urΦenφ typu skriptovacφ jazyka bychom m∞li pou₧φt atribut LANGUAGE. Vlo₧enφ jednoduchΘho skriptu do strßnky m∙₧e vypadat nap°. takto:
<SCRIPT LANGUAGE="JavaScript">
  window.status = "Prßv∞ si prohlφ₧φte moji strßnku."
</SCRIPT>
V²Üe uveden² skript zobrazφ zadan² text ve stavovΘ °ßdce. UrΦenφ druhu skriptovacφho jazyka pomocφ atributu LANGUAGE je d∙le₧itΘ, proto₧e de HTML lze vklßdat i skripty zapsanΘ v jin²ch jazycφch jako je VBScript nebo Tcl.

Druhou mo₧nostφ je vlo₧it skript pouze pomocφ odkazu. I v tomto p°φpad∞ vÜak musφme pou₧φt ukonΦovacφ tag </SCRIPT>:

<SCRIPT LANGUAGE="JavaScript"
        SRC="http://netscape.com/exmpl/demo.js">
</SCRIPT>
Skripty mohou b²t na strßnce umφst∞ny kdekoliv -- v zßhlavφ (HEAD) i v t∞le dokumentu (BODY). Do zßhlavφ bychom m∞li umφstit vÜe, co musφ b²t vykonßno jeÜt∞ d°φv∞, ne₧ zaΦne u₧ivatel pracovat s dokumentem -- nap°. definice funkcφ, kterΘ se vyvolßvajφ r∙zn²mi udßlostmi.

P°i vklßdßnφ skript∙ je rovn∞₧ vhodnΘ jejich obsah skr²t p°ed starÜφmi prohlφ₧eΦi pomocφ triku s komentß°i:

<HEAD>
<TITLE>Strßnka, kterß vßm popφÜe stavovou °ßdku</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
  window.status = "Prßv∞ si prohlφ₧φte moji strßnku."
// -->
</SCRIPT>
</HEAD>
P°ed ukonΦenφm HTML komentß°e --> pou₧ijeme dv∞ lomφtka, aby se interpretr JavaScriptu nepokouÜel konec HTML komentß°e pova₧ovat za Φßst skriptu. To mß ve zvyku zejmΘna Netscape Navigator.

Pokud pou₧φvßme skripty pro dynamickΘ vygenerovßnφ Φßsti dokumentu, m∙₧eme pou₧φt element NOSCRIPT a umφstit do n∞j alternativnφ text pro starÜφ prohlφ₧eΦe, kterΘ nepodporujφ skripty:

<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
  document.write("Pou₧φvßte prohlφ₧eΦ " + navigator.appName
                                  + " " + navigator.appVersion)
// -->
</SCRIPT>
<NOSCRIPT>
Pou₧φvßte prohlφ₧eΦ, kter² nepodporuje JavaScript.
</NOSCRIPT>
</BODY>
Z p°edchozφ ukßzky vidφme, ₧e text vygenerovan² programem v JavaScriptu se stßvß souΦßstφ strßnky. P°φkazy uvedenΘ uvnit° elementu SCRIPT se provedou pouze jednou p°i naΦφtßnφ strßnky.

Aby byly naÜe dokumenty opravdu interaktivnφ, je pot°eba, aby provedenφ urΦitΘ Φßsti skriptu bylo vyvolßno udßlostφ, kterou zp∙sobil u₧ivatel. Udßlostφ m∙₧e b²t p°ejetφ myÜφ p°es urΦit² element, kliknutφ myÜφ apod.

U ka₧dΘho elementu m∙₧eme pou₧φt n∞kolik nov²ch atribut∙, kterΘ odpovφdajφ jednotliv²m udßlostem. Jako jejich hodnota se uvßdφ p°φkazy, kterΘ se po vyvolßnφ danΘ udßlosti majφ provΘst -- tzv. obsluha udßlosti.

Obecn∞ m∙₧eme pou₧itφ udßlosti u n∞jakΘho elementu zapsat jako:

<TAG udßlost=obsluha udßlosti>
Udßlosti, kterΘ lze obslou₧it skriptem
UdßlostPopis
onLoad Udßlost je vyvolßna po nata₧enφ dokumentu do okna prohlφ₧eΦe nebo do vÜech rßm∙ v rßmci jednoho FRAMESET. Atribut m∙₧e b²t pou₧it u element∙ BODY a FRAMESET.
onUnLoad Udßlost je vyvolßna po odstran∞nφ dokumentu z okna nebo rßmu. Atribut m∙₧e b²t pou₧it s elementy BODY a FRAMESET.
onClick Udßlost je vyvolßna po kliknutφ myÜφ na element. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onDblClick Udßlost je vyvolßna po dvojitΘm kliknutφ myÜφ na element. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onMouseDown Udßlost je vyvolßna po stisknutφ tlaΦφtka myÜi nad elementem. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onMouseUp Udßlost je vyvolßna po uvoln∞nφ tlaΦφtka myÜi nad elementem. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onMouseOver Udßlost je vyvolßna p°i p°esunutφ myÜi nad element. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onMouseMove Udßlost je vyvolßna p°i pohybu myÜi nad elementem. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onMouseOut Udßlost je vyvolßna po odsunutφ myÜi z elementu. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onFocus Udßlost je vyvolßna v okam₧iku, kdy je element aktivovßn myÜφ nebo pomocφ tabulßtoru. Atribut je mo₧no pou₧φt u element∙ LABEL, INPUT, SELECT, TEXTAREA a BUTTON.
onBlur Udßlost je vyvolßna v okam₧iku, kdy element p°estßvß b²t aktivnφ. Atribut je mo₧no pou₧φt u element∙ LABEL, INPUT, SELECT, TEXTAREA a BUTTON.
onKeyPress Udßlost je vyvolßna po stisku a nßslednΘm uvoln∞nφ tlaΦφtka na klßvesnici. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onKeyDown Udßlost je vyvolßna po stisku tlaΦφtka na klßvesnici. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onKeyUp Udßlost je vyvolßna po uvoln∞nφ tlaΦφtka na klßvesnici. Atribut m∙₧e b²t pou₧it u v∞tÜiny element∙.
onSubmit Udßlost je vyvolßna p°i odesφlßnφ formulß°e. Atribut m∙₧e b²t pou₧it pouze u elementu FORM.
onReset Udßlost je vyvolßna po vynulovßnφ formulß°e. Atribut m∙₧e b²t pou₧it pouze u elementu FORM.
onSelect Udßlost je vyvolßna po oznaΦenφ textu ve vstupnφm poli. Atribut m∙₧e b²t pou₧it u element∙ INPUT a TEXTAREA.
onChange Udßlost je vyvolßna pokud se zm∞nila hodnota vstupnφho pole formulß°e. Atribut m∙₧e b²t pou₧it u element∙ INPUT, SELECT a TEXTAREA.

P°ehled udßlostφ, kterΘ m∙₧eme pou₧φt, uvßdφ tabulka. Ukß₧eme si Φßst strßnky, kde se po najetφ myÜφ nad odkaz ve stavovΘ °ßdce prohlφ₧eΦe objevφ vysv∞tlujφcφ text:

O rozvoj Webu se starß konsorcium
<A HREF="http://www.w3.org"
   onMouseOver="window.status='Kliknutφm na odkaz se dostanete'
   + ' na domovskou strßnku konsorcia W3C'">
W3C</A>
Jako obsluhu udßlosti bychom m∞li pou₧φvat vyvolßnφ d°φve definovanΘ funkce, kterß zajistφ vÜechny pot°ebnΘ akce. Toto °eÜenφ nßm usnadnφ pozd∞jÜφ zm∞ny v chovßnφ obsluhy udßlosti a zp°ehlednφ zßpis strßnky v HTML.

Objektov² model dokumentu

Objektov² model dokumentu (DOM) uspo°ßdßvß vÜechny objekty, kterΘ reprezentujφ prohlφ₧eΦ a prßv∞ zobrazenΘ strßnky, do hierarchie, odkud je mo₧nΘ k jednotliv²m objekt∙m p°istupovat a pracovat s nimi.

Zßkladnφ hierarchie objekt∙
window
  |--location 
  |--frames 
  |--history 
  |--navigator 
  |--event 
  |--screen 
  +--document 
       |--links
       |--anchors
       |--images
       |--filters
       |--forms
       |--applets
       |--embeds
       |--plugins
       |--frames
       |--scripts
       |--all
       |--selection
       |--styleSheets
       +--body

Zßkladnφm objektem je window, p°es kter² jsou dostupnΘ vÜechny dalÜφ objekty. Nejd∙le₧it∞jÜφm objektem je document, kter² v sob∞ zahrnuje vÜechny objekty a vlastnosti vztahujφcφ se k aktußlnφmu dokumentu. Na jednotlivΘ objekty v hierarchii (viz obrßzek 5) se odvolßvßme pomocφ teΦkovΘ notace: window.screen, window.document, window.document.body.

Proto₧e jsou vÜechny objekty potomky objektu window, m∙₧e tento vynechßvat. Zkrßcen∞ m∙₧eme psßt window.screen, document, document.body.

Na dalÜφch ni₧Üφch ·rovnφch v objektovΘ hierarchii mohou b²t bu∩ dalÜφ objekty anebo p°φmo vlastnosti a metody jednotliv²ch objekt∙. VÜe si ukß₧eme na p°φklad∞. Objekt document.all obsahuje vÜechny elementy obsa₧enΘ v dokumentu. P°φstupnΘ jsou pomocφ svΘho jmΘna definovanΘho atributem ID:

<H1 ID=Nadpis>Pokusn² nadpis</H1>
<P ID=Odstavec1>Text odstavce te∩ nenφ d∙le₧it²
Nynφ m∙₧eme ve skriptech na strßnce pou₧φvat objekty document.all.Nadpis a document.all.Odstavec1, kterΘ zastupujφ element pro nadpis a odstavec. U t∞chto objekt∙ mßme k dispozici vlastnosti, kterΘ odpovφdajφ atribut∙m pou₧iteln²m u odpovφdajφcφch element∙. Pomocφ vlastnosti document.all.Nadpis.align m∙₧eme m∞nit zp∙sob zarovnßnφ nadpisu. Nßsledujφcφ ukßzka obsahuje skript, kter² po kliknutφ myÜφ na nadpis zm∞nφ jeho zarovnßnφ zleva doprost°ed. Jde o prvnφ ukßzku skuteΦnΘho dynamickΘho HTML v dneÜnφm tΘmatu t²dne.
<HTML>
<HEAD>
<TITLE>Ukßzka dynamickΘho HTML 1.</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ChangeAlign()
{
  document.all.Nadpis.align = "center";
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<H1 ID=Nadpis ALIGN=LEFT
    onClick="ChangeAlign()">Pokusn² nadpis</H1>
<P ID=Odstavec1>Text odstavce te∩ nenφ d∙le₧it²
</BODY>
</HTML>
Z principu prßce s dynamick²m HTML vidφme, ₧e strßnka bez problΘm∙ bude pracovat i s prohlφ₧eΦi, kterΘ dynamickΘ HTML nepodporujφ. Jen se po kliknutφ myÜφ na nadpis nic nestane, proto₧e tyto prohlφ₧eΦe neum∞jφ dynamicky m∞nit obsah strßnky po jejφm zobrazenφ. To vÜak nijak dramaticky nesnφ₧φ informaΦnφ hodnotu strßnky.

U objekt∙, kterΘ odpovφdajφ element∙m strßnky, mßme k dispozici vlastnost i objekt style. Pomocφ vlastnosti style m∙₧eme p°istupovat k definici stylu elementu stejn∞ jako pomocφ atributu STYLE. Nßsledujφcφ k≤d by zm∞nil barvu a velikost nadpisu:

document.all.Nadpis.style = "color: red; font-size: 30px";
ZajφmavΘ je, ₧e style je zßrove≥ vlastnost i cel² objekt. Vlastnosti objektu style odpovφdajφ jednotliv²m vlastnostem styl∙. Poslednφ efekt tedy m∙₧eme dosßhnout i nßsledujφcφm k≤dem:
document.all.Nadpis.style.color = "red";
document.all.Nadpis.style.fontSize = "30px"
Zajφmavß je vlastnost innerText. Ta obsahuje text uvnit° elementu. Zßpisem do tΘto vlastnosti m∙₧eme text zm∞nit. Zkusme nßsledujφcφ legrßcku:
<HTML>
<HEAD>
<TITLE>Ukßzka dynamickΘho HTML 2.</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ChangeText()
{
  document.all.Nadpis.innerText = "Poslouchßte m∞ p∞kn∞!!!";
  document.all.Nadpis.style.color = "blue";
  document.all.Nadpis.style.fontSize = "50px";
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<H1 ID=Nadpis onClick="ChangeText()">
Klikn∞te na tenhle nadpis a uvidφte, co se stane.</H1>
</BODY>
</HTML>
Dokonce lze m∞nit cel² element, ne jen jeho obsah. Pou₧ijeme vlastnost outerHTML a p°edchozφ ukßzku upravφme tak, aby se po kliknutφ mφsto nadpisu objevil obrßzek:
<HTML>
<HEAD>
<TITLE>Ukßzka dynamickΘho HTML 3.</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ChangeText()
{
  document.all.Nadpis.outerHTML = "<IMG SRC=astro.gif>"
        + "<P>Krom∞ obrßzku p°idßm i krßtk² odstavec textu.";
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<H1 ID=Nadpis onClick="ChangeText()">
Klikn∞te na tenhle nadpis a uvidφte, co se stane.</H1>
</BODY>
</HTML>
V objektovΘm modelu nalezneme pod objektem document i kolekci styleSheets, kterß obsahuje jednotlivΘ styly p°ipojenΘ ke strßnce. Pomocφ jejφ metody addRule(selektor, deklarace, index) m∙₧eme do stylu p°idßvat novß pravidla. Nßsledujφcφ dokument se po kliknutφ myÜφ cel² vycentruje.
<HTML>
<HEAD>
<TITLE>Ukßzka dynamickΘho HTML 4.</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ChangeDocumentAlign()
{
    document.styleSheets[0].addRule("BODY", "text-align: center", 0);
}
// -->
</SCRIPT>
<STYLE></STYLE>
</HEAD>
<BODY onClick="ChangeDocumentAlign()">
<H1>Nadpis</H1>
<P>A n∞kolik odstavc∙ textu
</BODY>
</HTML>
Abychom mohli do kolekce styl∙ n∞co p°idßvat, musφ kolekce existovat. Proto strßnka obsahuje prßzdn² element STYLE, kter² vytvo°φ kolekci styleSheets s jednφm prvkem.

Bohu₧el zde nem∙₧eme rozebrat celou objektovou hierarchii. Zmφnφme se vÜak jeÜt∞ alespo≥ o n∞kolika zajφmavostech. Adresa dokumentu, kter² je prßv∞ zobrazovßn, je p°φstupnß p°es objekt location. Pokud tedy chceme p°φmo skriptem zm∞nit strßnku, kterß se prßv∞ zobrazuje, m∙₧eme pou₧φt p°φkaz location="http://n∞kde.jinde.cz".

Pokud mßme strßnku rozd∞lenou na rßmy, m∙₧eme z jakΘhokoliv rßmu m∞nit strßnku zobrazenou v ostatnφch rßmech. StaΦφ novou adresu zapsat do parent.jmΘno_rßmu.location. Tφmto zp∙sobem m∙₧eme dosßhnout specißlnφch efekt∙, jako je zm∞na obsahu vφce rßm∙ najednou po zvolenφ jednoho odkazu. V₧dy bychom vÜak m∞li zvß₧it, zda je chovßni strßnky snadno pochopitelnΘ pro jejφ u₧ivatele.

┌vod | KaskßdovΘ styly | Ukßzky | P°ehled vlastnostφ styl∙ | DHTML vs. Java


© Copyright 1998 Ji°φ Kosek, All Rights Reserved.
Strßnka obsahuje pln² text Φlßnku otiÜt∞nΘho v t²denφku Computerworld dne 30. ledna 1998 (CW5/98).
Strßnku p°ipravil Ji°φ Kosek, xkosj06@vse.cz
Poslednφ modifikace: 24-01-98