Vybrané metody JavaScriptu
Vybrané metody a vlastnosti
Window
Metody objektu window jsou např.:
window.alert("zprava")
Název objektu window, jakožto hlavního objektu můžeme vynechat:
alert("zpráva")
prompt("výzva k zadání hodnoty","implicitní hodnota")
confirm("otázka")
Otevření okna prohlížeče:
window.open(url,název okna,parametry okna);
URL - adresa html dokumentu (např. kontakty.htm) nebo obrázku (např. foto/pyramidy.jpg) nebo webové stránky (http://webowebu.phorum.cz/html/obrazky.htm)
Název okna - nezadáme-li tento parametr nebo zadáme-li "_blank", otevře se nové nepojmenované okno prohlížeče. Zadáme-li určitý název, můžeme jej použít např. v odkazech v parametru target.
Parametry okna - menubar (menu), toolbar (panel nástrojů), location (pole adresy), status (stavový řádek), width (šířka okna), height (výška okna), top (vzdálenost shora), left (vzdálenost zleva), resizable (možnost zvětšit okno).
Chceme-li např. otevřít okno bez menu a panelu nástrojů, uvedeme "menubar=no,toolbar=no" (ne všechny parametry fungují ve všech prohlížečích).
Má-li prohlížeč nastaveno otevření nového okna jako nového panelu (záložky), pak všechny tyto parametry ignoruje. Automatické otevírání nových oken může být prohlížečem blokováno.
Zavření okna:
Okno musí být otevřeno pomocí metody open. Do proměnné uložíme odkaz na nové okno.
var win = window.open("divy_sveta/visute_zahrady.png");
win.close();
Zavření aktuálního okna přímo z něj:
window.close(); //zavření aktuálního okna (musí být vytvořeno metodou open)
viz předchozí tlačítko zdrojový kód a v jím otevřeném okně tlačítko Zavřít
Aktivování okna (přenesení do popředí):
Otevřeme-li nové okno, pak po kliknutí na další tlačítko (odkaz) se toto okno dostane do pozadí. Otevřeme-li další html dokument nebo obrázek do okna se stejným názvem, zůstane toto okno i po načtení nového obsahu v pozadí (viz první ukázka). Musíme provést jeho aktivaci.
var win = window.open("divy_sveta/majak.png");
win.focus();
Nastavení velikosti okna prohlížeče, posunutí a rolování:
window.resizeTo(1000,800); //nastavení velikosti aktuálního okna na 1000x800px
window.resizeBy(-100,50); //zmenšení šířky o 100px a zvětšení výšky o 50px
window.moveTo(400,200); //posunutí levého horního rohu okna na souřadnice 400,200
window.moveBy(-100,50); //posunutí okna o 100px vlevo a 50px dolů
window.scrollTo(100,300); //rolování na pozici 100,300
window.scrollBy(0,200); //rolování o 200px dolů
Location
location.href="fotogalerie2.htm"; //přesměrování na stránku fotogalerie2.htm
Časování
var cas=setInterval("dalsi()",2000); //nastavení intervalu opakování na 2000 milisekund, tj. 2 sekundy
clearInterval(cas); //zrušení opakování
Document
Metody objektu document jsou např.:
document.write("zpráva")
document.writeln("zpráva")
document.getElementById("id")
document.getElementsByName("name")
document.getElementsByTagName("tag")
Metody write a writeln lze použít pouze ve skriptu prováděném při vytváření stránky. Do hotového dokumentu již nelze těmito metodami zapisovat. Lze měnit objekty dokumentu. Na objekty se můžeme odkázat prostřednictvím metod get nebo DOM.
History
Navigator
Screen
Date
Vytvoření objektu datum:
var datum = new Date(); //aktuální - dnešní datum
var datum = new Date(rok,měsíc,den); //určité datum (měsíc je třeba zadat o 1 méně)
var datum = new Date(rok,měsíc,den,hodiny,minuty,sekundy);
var datum = new Date(milisekundy); //počet milisekund od 1.1.1970
Formátování datumu:
datum.toLocaleString(); //formát datumu a času podle nastavení počítače
Den, měsíc, rok, den v týdnu, hodiny, minuty, sekundy z datumu:
datum.getDate(); //číslo dne
datum.getMonth(); //číslo měsíce (o 1 méně): 0-leden, 1-únor, 2-březen …
datum.getFullYear(); //rok
datum.getDay(); //číslo dne v týdnu: 0-neděle, 1-pondělí, 2-úterý, … 6-sobota
datum.getHours(); //hodiny
datum.getMinutes(); //minuty
datum.getSeconds(); //sekundy
Nastavení dne, měsíce, roku, hodin, minut, či sekund:
datum.setDate(); //den
datum.setMonth(); //měsíc (o 1 méně): setMonth(3) nastaví duben
datum.setFullYear(); //rok - čtyřciferně
datum.setHours(); //hodiny
datum.setMinutes(); //minuty
datum.setSeconds(); //sekundy
Porovnání datumů, zjištění počtu uplynulých dnů:
datum.getTime(); //počet milisekund od 1.1.1970
String
Vytvoření textového řetězce:
var text = new String("nějaký text"); //pomocí konstruktoru
var text = "nějaký text"; //vložením hodnoty
var text = document.forms["formular"].jmeno.value;
var text = document.getElementsByName("jmeno")[0].value;
var text = document.getElementById("jm").value;
//získáním textové hodnoty
Získanou textovou hodnotou nemusí být pouze obsah textového pole formuláře, ale i jiné vlastnosti objektů, např. src, title, width, height, apod.
Délka textového řetězce, jednotlivé znaky:
text.length //délka textu (vlastnost objektu text)
text.charAt(index) //znak na i-té pozici textu (metoda objektu text)
//znaky textového řetězce jsou indexovány od 0 - viz pole
Převod na malá či velká písmena:
text.toLowerCase() //převod textu na malá písmena
text.toUpperCase() //převod textu na velká písmena
Vyhledání pozice znaku či části řetězce:
text.indexOf(hledaná část, pozice) //index - pozice hledané části textu
//není-li pozice zadána, hledá se od začátku textu
//je-li pozice zadána, hledá se od tohoto místa
//není-li hledaná část nalezena, je výsledkem -1
text.lastIndexOf(hledaná část, pozice)
//index hledané části - vyhledává od konce textu
Rozdělení řetězce na části:
text.substr(pozice, délka) //část řetězce od zadané pozice
//není-li délka zadána, bere se zbytek textu do konce řetězce
text.substring(začátek, konec)
//část řetězce od zadané začáteční pozice do koncové pozice
text.split(oddělovač, kolikrát)
//není-li zadáno kolikrát, rozdělí se text ve všech místech oddělovače
//jednotlivé části lze uložit do pole
Nahrazení části řetězce jiným řetězcem:
text.replace(nahrazovaná část, nový řetězec)
//nahrazení části řetězce jiným znakem či textem
Převod čísla na řetězec:
Při provedení řetězcové operace, např. spojování řetězců pomocí operátoru + je číslo automaticky převedeno na řetězec. Převod můžeme provést též metodou:
cislo.toString() //převedení čísla na řetězec
Převod řetězce na číslo:
Při provedení matematické operace, např. násobení, odčítání, inkrementace apod. (pozor + je jak matematický tak řetězcový operátor), se řetězec (osahuje-li zápis čísla) automaticky převede na číslo.
celeCislo = parseInt(text)
//převedení na celé číslo
realCislo = parseFloat(text)
//převedení na reálné číslo
jeCislo = isFinite(text)
//zjištění, zda text představuje celé nebo reálné číslo (true)
Math
Absolutní hodnota, mocnina, odmocnina:
Zaokrouhlování:
Math.floor(cislo); //zaokrouhlí dolů na celé číslo
Math.ceil(cislo); //zaokrouhlí nahoru na celé číslo
Náhodná čísla:
Math.random() //náhodné reálné číslo z intervalu <0,1)
Math.floor(Math.random()*6)+1 //náhodné číslo 1, 2, 3, 4, 5, 6
Math.ceil(Math.random()*6) //náhodné číslo 1, 2, 3, 4, 5, 6
//pravděpodobnost, že random() bude čistá 0, je mizivá
Array
RegExp
Regulární výrazy představují masku textových řetězců, vytvořenou pomocí speciálních zástupných znaků (obdobně jako * a ? při vyhledávání souborů).
Pomocí metody test můžeme zjistit, zda textový řetězec odpovídá masce regulárního výrazu. S regulárními výrazy pracují i další metody - viz dále.
Znaky:
Regulární výrazy jsou tvořeny znaky písmen, číslic a ostatními znaky, jako např. @, mezera apod.
Znaky \, ^, $, ., [, ], |, (, ), ?, *, +, {, } mají speciální funkce. Mají-li být součástí textu, musí být před nimi uvedeno \ (zpětné lomítko). Například .cz musí být zapsáno \.cz.
Znak | Význam | Příklad | Popis |
---|---|---|---|
. | libovolný znak | ||
[] | interval nebo množina znaků | [0-9] [A-Za-z] [áéěíóúůžščřďťň] | číslice 0 až 9 velká a malá písmena diakritická písmena |
[^] | neobsahující znaky | [^A-Z] | neobsahující velká písmena |
{} | počet | {5} {2,4} {6,} | 5 2 až 4 6 a více |
? | počet | totéž jako {0,1} | žádný nebo jeden |
* | počet | totéž jako {0,} | žádný nebo libovolný počet |
+ | počet | totéž jako {1,} | jeden nebo libovolný počet |
neuvedeme-li počet | totéž jako {1} | jeden | |
^ | začátek řetězce | ||
$ | konec řetězce | ||
() | podvýraz | ||
| | nebo |
Příklady:
Regulární výraz | Popis | Význam | Vyhovující řetězce - příklady |
---|---|---|---|
@ | řetězec obsahující @ | e-mailová adresa | 123jana@seznam.cz |
seznam | řetězec obsahující slovo seznam | internetové adresy seznamu | www.seznam.cz, slovnik.seznam.cz |
^www | řetězec začínající www | internetová adresa | www.google.com, www.seznam.cz |
cz$ | řetězec končící cz | internetová adresa, e-mail | www.seznam.cz, mapy.cz |
^[0-9]{9}$ | řetězec složený z 9 číslic | telefonní číslo | 725489321 |
^[0-9]{3} ?[0-9]{2}$ | řetězec obsahující 3 číslice, pak 1 nebo žádnou mezeru, a nakonec 2 číslice | PSČ | 12500, 530 01 |
^[0-9]{6}/?[0-9]{4}$ | řetězec obsahující 6 číslic, pak může být lomítko, a nakonec 4 číslice | rodné číslo | 750321/0110, 7503210110 |
^[0-9]{1,2}[\.][0-9]{1,2}[\.][0-9]{4}$ | řetězec obsahující 1 až 2 číslice, pak tečku, další 1 nebo 2 číslice, tečku a nakonec 4 číslice | datum | 5.2.2010, 12.3.2011, 21.12.2011 |
^[A-Za-z0-9]{6,}$ | řetězec obsahující pouze malá či velká písmena nebo číslice, minimálně 6 znaků | přihlašovací jméno, heslo | Kuba123, XXLssm |
^[A-ZŽŠČŘ][a-záéěíóúůžščřďťň]+$ | řetězec obsahující pouze písmena včetně diakritiky, na začátku velké písmeno | jméno, příjmení apod. | Jana, Zbyněk, Řehoř, apod. |
^[A-ZÁÉĚÍÓÚŮŽŠČŘĎŤŇ a-záéěíóúůžščřďťň \.]+$ | řetězec obsahující malá i velká písmena včetně diakritiky, případně mezeru či tečku | město | Hradec Králové, Praha, Lysá n. L |
^[a-záéěíóúůžščřďťň \.]+$ s parametrem i | řetězec obsahující malá i velká písmena včetně diakritiky, případně mezeru či tečku parametr i - ignore case | město | Hradec Králové, Praha, Lysá n. L. |
Vytvoření regulárního výrazu:
var reg = new RegExp("výraz", "parametry");
nebo:
var reg = /výraz/parametry;
Zadání parametrů je nepovinné. Parametr i znamená ignore case (při vyhodnocování se nerozlišují malá a velká písmena), parametr g znamená global.
Metody pracující s regulárními výrazy:
- test - ověřění, zda textový řetězec odpovídá masce regulárního výrazu (vrací true nebo false):
if(reg.test(řetězec)) - exec - vrací části řetězce odpovídající regulárnímu výrazu (můžeme uložit do pole):
pole = reg.exec(řetězec);
String metody pracující s regulárními výrazy:
- match - vrací části řetězce odpovídající regulárnímu výrazu:
pole = řetězec.match(reg); - split - vrací části řetězce, oddělovač je zadán regulárním výrazem:
pole = řetězec.split(reg); - search - vrací pozici části řetězce odpovídající regulárnímu výrazu:
pozice = řetězec.search(reg); - replace- nahradí část řetězce odpovídající regulárnímu výrazu novým řetězcem (je-li regulární výraz vytvořen s parametrem g - global, budou nahrazeny všechny výskyty):
řetězec = řetězec.replace(reg,novy);