JavaScript zábavky
Veľa z príkladov na tejto stránke sa dá skúšať rovno v javascript konzole vo Firefoxe alebo Chrome (tá v Chrome je trochu lepšia/krajšia a tak budeme používať príklady z nej)
V Chrome sa ku konzole dostaneme cez menu -> Nástroje -> JavaScript konzola, alebo stlačením
Ctrl+Shift+J
.
Vo Firefoxe je to nápodobne Nástroje -> Web developer -> Web konzola (Ctrl+Shift+K
).
Pozor: vo Firefoxe Ctrl+Shift+J
otvorí inú konzolu, ktorá nie je veľmi vhodná na experimentovanie.
Jedným z nie celkom obyčajných použití JavaScriptu sú Bookmarklet-y. Sú to malé (aj keď niekedy nie až tak malé:-)) kúsky JavaScriptu, ktoré môžeme mať v záložkách (ideálne v paneli záložiek, aby sa ne ľahko klikalo) a ktoré po kliknútí namiesto otvorenia novej stránky spravia niečo s tou aktuálnou.
Pár bookmarkletov na ukážku. Keď ich kliknete priamo tu, tak sa aktivujú na tejto stránke. Najlepšie je pridať si ich na panel záložiek. Keď si ho zobrazíte (Ctrl+Shift+B v Chrome), tak ich naň stačí pretiahnuť. Niektoré prehliadače majú po kliknutím pravým tlačítkom možnosť "Pridať záložku". V iných treba dať skopírovať odkaz a pridať ho ako novú záložku (niekde v menu).
Bookmarklet | Popis | Domovská stránka |
---|---|---|
Skry obrázky | Skryje všetky obrázky. | http://www.bookmarklets.com/tools/categor.html |
Ukáž elementy | Ukáže jednotlivé HTML elementy. | http://www.bookmarklets.com/tools/categor.html |
Click2Zap | Kliknutím na element ho zmažeme. | http://www.mrclay.org/2006/02/18/click2zap-bookmarklet/ |
Skry element | Ďalší skrývací bookmarklet. Escape skončí skrývanie. | https://gist.github.com/agibsonsw/1746472 |
Kick Ass | Asteroids hra: pohybuj sa po stránke a odstreľuj jednotlivé prvky. | http://kickassapp.com/ |
-
Deklarácia premenných:
var menoPremennej = hodnota
Deklarácia premennej nevracia žiadnu hodnotu ako výsledok, preto nám konzola píše
undefined
ako výsledok. -
Základné typy:
undefined
,number
,string
,boolean
-
Polia
-
Objekty: dátová štruktúra, do ktorej môžeme vkladať viac premenných podľa mena.
function
. Funkcie je možné priraďovať do premenných a potom ich pomocu týchto premenných volať. Tiež sa dajú zadefinovať funkcie bez mena (samozrejme majú zmysel len ak si ich hneď uložíme do nejakej premennej alebo odovzdáme ako parameter).Funkcia
g
nič nevracia (nie je v nej príkazreturn
), preto nám konzola ako výsledok jej zavolania vypísalaundefined
.Funkcie samozrejme možno tiež vkladať aj do objektov (a aj polí):
this
je špeciálna premenná, ktorá ukazuje na objekt, z ktorého funkciu voláme (tá istá funkcia môže byť vložená vo viacerých objektoch naraz :-)).console.log
je funkcia, ktorá do konzoly vypíše argumenty s ktorými ju zavoláme.Cykly fungujú podobne ako v C/C++
Podmienka je tiež rovnaká ako v C/C++
Možnosť ľahko manipulovať s funkciami ako s premennými sa v JavaScripte často používa. Napríklad každé pole má funkciu
forEach
, ktorá ako parameter očakáva funkciu s jedným alebo dvoma parametrami, ktorú potom zavolá postupne s každým prvkom poľa (a jeho indexom, ak má funkcia 2 parametre).<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test</title> <link rel="stylesheet" type="text/css" href="test.css"/> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> </head> <body> <h1>Nadpis</h1> <div id="vsetko"> <p>Odstavec</p> <p class="zvyraznene">Druhý odstavec</p> </div> </body> </html>
h1 { background-color: lightblue; } #vsetko { border: 1px dashed blue; } .zvyraznene { font-style: italic; font-family: fantasy; }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test</title> <link rel="stylesheet" type="text/css" href="test.css"/> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> <script src="test.js" type="text/javascript"></script> </head> <body onload="javascript:start();"> <h1 onclick="javascript:kliknutyNadpis(this)">Nadpis</h1> <div id="vsetko"> <p>Odstavec</p> <p class="zvyraznene">Druhý odstavec</p> <p id="sprava"></p> </div> </body> </html>
function start() { console.log("Nacitane"); } function kliknutyNadpis(e) { e.innerHTML = e.innerHTML + "s"; }
document.getElementById("id")
documents.getElementByTagName("tag")
Z javascriptu vieme aj meniť CSS vlastnosti
Odstavec s id 'odstavec'
JavasScript sa dá vložiť aj ako cieľ odkazu (ale musi to byť len jeden príkaz).
<a href="javascript:alert('ahoj');">Ahoj</a>
AhojAko spojiť viacero príkazov do jedného? Vyrobíme funkciu, ktorú hneď aj zavoláme.
(function() { var ps = document.getElementsByTagName('p'); for(var i=0; i<ps.length; ++i) { ps[i].innerHTML='AHOOOOJ'; } }) ();
AHOOOJBohužial pole, ktoré vráti
getElementByTagName
, nie je úplne pole, iba niečo čo sa na pole podobá. Napríklad nemá funkciu forEach :-(. V JS ale vieme ľahko zavolať funkciu forEach z normálneho poľa na tom, čo nám vrátigetElementByTagName
:[].forEach.call( document.getElementsByTagName("p"), function(p) { p.innerHTML="AHOOOOJ"; } );
CENSOREDTakéto odkazy sa potom dajú pridať do záložiek (bookmarks), idaálne na panel záložiek, čím vznikne bookmarklet.
- Menenie CSS vlastností z JS (farby, formátovanie, pozícia, viditeľnosť)
- Časovač + pozícia (CSS): animácie
- Kreslenie (
canvas
)