scriptsrc. Zriedkave pouzitie, väcsina prehliadacov ho ignorujeElement script je mozne bud vlozit priamo do stranky HTML alebo sa da nacitat z externeho suboru.
<script type="text/javascript">
function sayHI()
{
alert("Ahoj");
}
</script>
Pri nacitani stranky sa zbytok obsahu nenacita a nezobrazi, pokoal sa nevyhondoti vsetok kod obsiahnuty v elemente script. V kode sa nesmie vyskytovat retazec </script>, nasledujuci kod by vyhodil chybu:
<script type="text/javascript">
function sayHI()
{
alert("</script>");
}
</script>
treba to odstranit napriklad rozdelenim toho retazca:
<script type="text/javascript">
function sayHI()
{
alert("</scr" + "ipt>");
}
</script>
Kod Javascriptu nacitany z externeho suboru:
<script type="text/javascript" src="example.js" />
Pripona suboru: *.js je nepovinna, zodpoveda nepisanej dohode. Pre väcsiu kompatibilitu sa odporuca uzavriet emement takto:
<script type="text/javascript" src="example.js"> </sctipt>
Je mozne nacitat script z vonkajsich domen, cize z domeny inej ako je domena sranky, ktora skript nacitava: <script type="text/javascript" src="http://www.niekde.com/example.js">
Pri nacitani a interpretovani obsahu externeho suboru taktiez dochadza k pozastaveniu spravania obsahu stranky.
script sa na stranke tradicne umiestnuju do elementu head
<html>
<head>
<title>Ukazkova stranka</title>
<script type="text/javascript" src="example1.js"></script>
<script type="text/javascript" src="example2.js"></script>
</head>
<body>
<!--Telo stranky-->
</body>
</html>
Hlavny dovod k tomuto bol udrzat odkazy na externe subory spolu so subormi pre kaskadove styly v tej istej oblasti. nevyhoda je pri aplikaciach, kde je treba velmi vela JS-oveho kodu, pricom kym sa nenacita a neinterpretuje, nezacne sa s vykreslovanym stranky, co moze trvat znacnu dobu. preto moderne webove aplikacie maju vsetky odkazy na JS az v zavere elementu body:
<html>
<head>
<title>Ukazkova stranka</title>
</head>
<body>
<!--Telo stranky-->
<script type="text/javascript" src="example1.js"></script>
<script type="text/javascript" src="example2.js"></script>
</body>
</html>
Takto sa najprv vykresli stranka a uzivatel nemusi cumiet na prazdne okno prehliadaca.
Jazyk HTML 4.01 zaviedol parameter defer, ktory signalizuje, ze dany script pri spusteni nezmeni strukturu stranky. Jeho nastavenie ma taky isty ucinok ako umiestnenie elementu script na koniec elementu body ako sme si ukazali vyssie.
<html>
<head>
<title>Ukazkova stranka</title>
<script type="text/javascript" src="example1.js" defer="defer"></script>
<script type="text/javascript" src="example2.js" defer="defer"></script>
</head>
<body>
<!--Telo stranky-->
</body>
</html>
Tento parameter vsak podporuju len IE a Firefox, ostatné prehliacace ho ignoruju.
<script type="text/javascript">
function compare (a, b)
{
if (a < b ) {
alert("A je mensie ako B");
} else if (a > b) {
alert("A je väcsie ako B");
} else {
alert("A sa rovna B");
}
}
</script>
Symbol mensita vo vyraze a < b sa interpretuje v jazyku XHTML ako zaciatok nejakej znacky, co sposoby syntakticku chybu, pretoze za symbolom mensitka nesmie byt medzera. Tato syntakticka chyba sa da opravit dvoma sposobmi. prvym je nahradit symboly mensitka (<) zodpovedajucou entitou HTML (<), vysledny kod potom vyzera nasledovne:
<script type="text/javascript">
function compare (a, b)
{
if (a < b ) {
alert("A je mensie ako B");
} else if (a > b) {
alert("A je väcsie ako B");
} else {
alert("A sa rovna B");
}
}
</script>
Tento kod sa na stranke XHTML bez problemov spusti, je vsak horsie citatelny.
Druhou moznostou je je podla specifikacie jazyka XHTML obalit kod JS do sekcie CDATA. V jazyku XHTML a XML sa sekcieCDATA pouzivaju na oznacenie oblasti dokumentu, ktore obsahuju volne formatovany text, ktory nie je nutne analyzovat. Vdaka tomu je mozne v tejto seckii pouzivat lubovolne znaky bez toho, aby prislo k syntaktickej chybe:
<script type="text/javascript"> <![CDATA[
function compare (a, b)
{
if (a < b ) {
alert("A je mensie ako B");
} else if (a > b) {
alert("A je väcsie ako B");
} else {
alert("A sa rovna B");
}
}
]]></script>
CDATA. To sa da obijst tak, ze znacky umiestnime do komentarov jazyka JS:
<script type="text/javascript">
//<![CDATA[
function compare (a, b)
{
if (a < b ) {
alert("A je mensie ako B");
} else if (a > b) {
alert("A je väcsie ako B");
} else {
alert("A sa rovna B");
}
}
//]]>
</script>
Tento sposob zapisu funguje vo vsetkych modernych prehliadacoch. Vyzera to sice krkolomne, jedna sa vsak o platny zapis v jazyku XHTML, ktory je zaroven elegantnym sposobom kompatibilny aj s prehliadacmi, ktore nepodporuju specifikaciu jazyka XHTML.
Tento element moze obsahovat akekolvek znacky HTML, ktore sa daju omiestnit do tela dokumentu okrem elementu script. Obsah tohto elementu sa zobrazi v dvoch pripadoch:
<html>
<head>
<title>Ukazkova stranka</title>
<script type="text/javascript" src="example1.js" defer="defer"></script>
<script type="text/javascript" src="example2.js" defer="defer"></script>
</head>
<body>
<noscript>
<p>Tato stranka vyzaduje prehliadac s podporou JavaScriptu</p>
</noscript>
<!--Telo stranky-->
</body>
</html>
Premenna test je ina premenna od premennej Test. Tuto vlastnost jazyka JS je treba mat stale na pamati. pri zakladani mien premennych a funkcii sa tieto nesmu vyberaz z klucovych slov jazyka JS. Napr. typeof je klucove slovo, ale typeOf uz mozeme pouzit pre nazov vlastnej funkcie.
identifikator je nazov premennej, funkcie, vlastnosti alebo argumentu funkcie. Skladaju sa s jedneho alebo viacerych znakov v nasledujucom formate:
Pismenka identifikatorou mozu obsahovat znaky rozsireneho kodovania ASCII alebo Unicode ako je Æ alebo Č, ale prilis sa to neodporuca. Identifikatory by sa mali (nie je to povinne ale odporuca sa to) riadit tzv. tavou konvenciou, cize prve pismenko slova ma byt male a kazde dalsie slovo zacina velkym pismenkom napriklad:
firstSecond myCar doSomethingImportant
// toto je jednoriadkovy komentar
/* toto je komentar na
viac riadkov */
Prikazy sa ukoncuju bodkociarkou (;)
var sum = a + b;
Viac prikazov sa da uzavriet do bloku pomocou lavej zlozenej zatvorky ({) na ukoncit blok pomocou pravej zlozenej zatvorky (}).
if (test) {
test = false;
alert(test);
}
Riadiace prikazy ako je napriklad if vyzaduju bloky kodu len ked sa ma vykonat viacej prikazov, ale je vhodnejsie pouzivat bloky kodu aj ked sa ma vykonat len jeden prikaz:
if (test)
alert(test); //platny prikaz, ale nachylny k chybam, nemal by sa pouzivat
if (test) {
alert(test); //preferovana varianta
}
| break | case | catch | continue |
| default | delete | do | else |
| false | finally | for | function |
| if | in | instanceof | new |
| null | return | switch | this |
| throw | true | try | typeof |
| var | void | while | with |
| abstract | boolean | byte | char |
| class | const | debugger | double |
| enum | export | final | float |
| goto | implements | import | int |
| interface | long | native | package |
| private | protected | public | short |
| static | super | synchronized | throws |
| transient | volatile |
pri pokuse pouzit krucove slovo ako identifikator prijde vo väcsine priehliadacov k chybe "ocakavany identifikator".
Premenne su v ECMAScripre volne typovane, t.j. premnenna moze uchovavat rozny typ dat. K definovaniu premenne sa pouziva operator var, po ktorom nasleduje identifikator premennej:
var message;
Premenna message ma tu bez inicializacie hodnotu undefined, pri definicii premennej mozeme rovno inicializovat jej hodnotu:
var message = "ahoj";
Premennej to priradi textovy retazec ako hodnotu, nedefinujeje ju ako textovu premennu, mozeme zmenit nie len jej hodnotu, ale aj typ:
var message = "ahoj"; message = 100; //v poriadku, ale neodporuca sa
| Kod | Popis |
|---|---|
| \' | jednoduche uvodzovky |
| \" | dvojite uvodzovky |
| \& | ampersand |
| \\ | opacne lomitko |
| \n | novy riadok |
| \r | carriage return |
| \t | tabelator |
| \b | backspace |
| \f | form feed |
| Operator | Popis | Priklad | Vysledok |
|---|---|---|---|
| + | scitanie | x=y+2 | x=7 |
| - | odcitanie | x=y-2 | x=3 |
| * | nasobnenie | x=y*2 | x=10 |
| / | delenie | x=y/2 | x=2,5 |
| % | zvysok | x=y%2 | x=1 |
| ++ | zvysenie | x=++y | x=6 |
| -- | znizenie | x=--y | x=3 |
| Operator | Popis | Priklad |
|---|---|---|
| = = | rovna sa | x = = 8 je nepravda |
| = = = | je presne rovne (hodnota aj typ) | x = = =5 je pravda x = = ="5" je nepravda |
| != | nerovna sa | x != 8 je pravda |
| > | je väcsie nez | x > 8 je nepravda |
| < | je mensie nez | x < 8 je pravda |
| >= | je väcsie alebo rovne | x >= 8 je nepravda |
| <= | je mnesie alebo rovne | x <= 8 je pravda |
| Operator | Popis | Priklad |
|---|---|---|
| && | a zaroven | (x<10 && > 1) je pravda |
| || | alebo | (x = =5 || y = = 5) je nepravda |
| ! | negacia | !(x = = y) je pravda |
premenna=(podmienka)?hodnota1,hodnota2
pozdrav=(navstrevnik=="direktor")?"Mily veduci","Mily"
Ak je hodnota premennejnavstevnik "direktor", premennej pozdrav sa priradi hodnota "Mily veduci" inak sa jej priradi hodnota "Mily".
if (podmienka)
{
prikazy, ktore maju byt vykonane, ked je splnena podmienka
}
prikazy sa zadavaju malym
if (podmienka)
{
prikazy, ktore maju byt vykonane, ked je splnena podmienka
}
else
{
prikazy, ktore maju byt vykonane, ked nie je splnena podmienka
}
if (podmienka1)
{
prikazy, ktore maju byt vykonane, ked je splnena podmienka 1
}
else if (podmienka2)
{
prikazy, ktore maju byt vykonane, ked je splnena podmienka 2
}
else {
prikazy, ktore maju byt vykonane, ked nie je splnena podmienka 1 a 2
}
switch (vyraz)
{
case 1:
vykonaj sekvenciu prikazov 1;
break;
case 2:
vykonaj sekvenciu prikazov 2;
break;
default:
sekvencia prikazov 3, ked nie je splnena ziadna z predchadzajucich podmienok
}
Napriklad:
<script type="text/javascript">
//Ziskam iny pozdrav v zavyslosti od dna v tyzdni
//Nedela=0,Pondelok=1,Utorok=2,...
var d=new Date();
theDay=d.getDay();
switch (theDay)
{
case 5:
document.write("Konecne piatok!");
break;
case 6:
document.write("Hura sobota");
break;
case 0:
document.write("Ospala nedela");
break;
case 1:
document.write("Modry pondelok");
break;
case 2:
document.write("Pracovny utorok");
break;
case 3:
document.write("V stredu sa to uz lame");
break;
default:
document.write("Stvrtok, uz len 2 dni!");
break;
}
</script>
alert("nejaky text");
Priklad:
<html>
<head>
<title>Alert Box</title>
<script type="text/javascript">
function show_alert()
{
alert("Ja som alert box!");
}
</script>
</head>
<body>
<input type="button" onclick="show_alert()" value="Ukaz Alert box" />
</body>
</html>
confirm("nejaky text");
Priklad:
<html>
<head>
<title>Confirm Box</title>
<script type="text/javascript">
function show_confirm()
{
var r=confirm("Stlac nejake tlacitko!");
if (r==true)
{
alert("stracil si OK!");
}
else
{
alert("stracil si Cancel!");
}
}
</script>
</head>
<body>
<input type="button" onclick="show_confirm()" value="Ukaz Confirm box" />
</body>
</html>
prompt("nejaky text","prednastavena hodnota");
Priklad:
<html>
<head>
<title>Prompt Box</title>
<script type="text/javascript">
function show_prompt()
{
var meno=prompt("Prosim vloz svoje meno","Martinko Klingacik");
if (name!=null && name!="")
{
document.write("Ahoj " + name + "!");
}
else
{
document.write("Ahoj debil!");
}
}
</script>
</head>
<body>
<input type="button" onclick="show_prompt()" value="Ukaz Prompt box" />
</body>
</html>