Beépített függvények
A Math objektum
A Math a JavaScript beépített objektuma, amely matematikai állandókat és függvényeket tartalmaz.
Kerekítés és csonkolás
A Math objektum leghasznosabb tagfüggvényei közül három, tízes számrendszerbeli értékek kerekítésére használható:
- Math.ceil(): a számot egész számra kerekíti, felfelé
- Math.floor(): a számot egész számra kerekíti, lefelé
- Math.round(): a számot a legközelebbi egész számra kerekíti
Egy adott helyiértékre nem kerekíthetünk (például tizedestörteket megadott számú tizedesjegyre). Az alábbi függvény a
számot két tizedesjegyre kerekíti:
function round(szam) {
return Math.round(szam * 100) / 100;
}
Véletlenszámok létrehozása
A Math objektum egyik leggyakrabban használt tagfüggvénye a Math.random(), amellyel véletlenszámot hozhatunk létre.
A tagfüggvény nem kér bemeneti paramétert, visszatérési értéke pedig egy 0 és 1 közötti, véletlenszerűen előállított
tizedes tört.
Amikor véletlenszámra van szükségünk, általában 1 és egy megadott szám közötti egész számot szeretnénk kapni. Ezt egy
általános célú véletlenszám-függvénnyel oldhatjuk meg:
function rand(szam) {
return Math.floor(Math.random() * szam) + 1;
}
A Math egyéb függvényei
A Math.sin() és a Math.cos() tagfüggvények szinusz-, illetve koszinusz-számításra használhatóak. Az objektumnak emellett matematikai
állandókat ábrázoló tulajdonságai is vannak.
- A Math.PI a kör kerültének és átmérőjének a hányadosa
- A Math.E a természetes alapú logaritmus alapja (kb. 2,718)
- A Math.LN2 a kettő természetes alapú logaritmusa (kb. 0,693)
- A Math.LN10 a tíz természetes alapú logaritmusa (kb. 2,302)
- A Math.LOG2E az E kettesalapú logaritmusa (kb. 1,442)
- A Math.LOG10E az E természetes alapú logaritmusa (kb. 0,434)
- A Math.SQRT1_2 az egyketted négyzetgyöke
- A Math.SQRT2 a kettő négyzetgyöke
Algebrai függvények
- A Math.acos egy szám arkusz koszinuszát adja meg radiánban.
- A Math.asin egy szám arkusz szinuszát adja meg
- A Math.atan egy szám arkusz tangensét adja meg
- A Math.cos egy szög koszinuszát adja meg
- A Math.sin egy szög szinuszát adja meg
- A Math.tan egy szög tangensét adja meg
Statisztikai és logaritmikus függvények
- A Math.exp az e-t emeli fel kívánt hatványra
- A Math.log egy szám természetes alapú logaritmusát adja vissza
- A Math.max két szám közül a nagyobbat választja ki
- A Math.min két szám közül a kisebbet választja ki
Egyszerű matematika és kerekítés
- A Math.abs egy szám abszolút értékét adja meg
- A Math.ceil felfelé kerekíti a számot a legközelebbi egészhez
- A Math.floor lefelé kerekíti a számot a legközelebbi egészhez
- A Math.pow a megadott hatványra emel egy számot
- A Math.round a legközelebbi egészhez kerekíti a számot
- A Math.sqrt a szám négyzetgyökét számítja ki
Dátumok használata
A Date objektum egy beépített JavaScript objektum, amely lehetővé teszi a dátumokkal és időpontokkal való kényelmes munkát.
A JavaScript az időt az 1970. január 1-je éjfél óta eltelt ezredmásodpercekben számolja. Az 1970 előtti dátumokat a korábbi
változatok nem támogatták, az újabbakban negatív számokként jelennek meg.
Date objektum létrehozása
Új Date objektumot a new kulcsszóval hozhatunk létre, és ilyenkor megadhatjuk az objektumban tárolni kívánt dátumot is.
Az alábbi alakok bármelyikét használhatjuk:
szulinap = new Date();
szulinap = new Date("June 20, 2003 08:00:00");
szulinap = new Date(6, 20, 2003);
szulinap = new Date(6, 20, 2003, 8, 0, 0);
Ha nem adunk meg paramétert, akkor az objektumban az aktuális dátum tárolódik.
Dátumok beállítása
Több set tagfüggvény is létezik, amelyek mindegyike a Date objektum valamelyik összetevőjét állítja be:
- A setData() a napot állítja be.
- A setMonth() a hónap beállítására szolgál. A JavaScriptben a hónapok számozása 0-tól 11-ig tart, a január a 0. hónap.
- A setFullYear() az évet állítja be.
- A setTime() az időt és a dátumot állítja be. Itt az 1970. január 1-je óta eltelt ezredmásodpercek számát kell megadnunk.
- A setHours(), a setMinutes() és a setSeconds() sorban az órát, a percet, és a másodpercet állítják be.
Dátumok lekérdezése
A Date objektumokból a get tagfüggvényekkel olvashatjuk ki a megfelelő tulajdonság értékét. Az alábbi get tagfüggvényeket használhatjuk:
- getDate(): A napot kérdezi le.
- getMonth(): A hónap lekérdezésére szolgál.
- getFullYear(): Az évet kérdezi le.
- getTime(): Az időt és a dátumot kérdezi le.
- getHours(), getMinutes(), getSeconds(), getMilliseconds(): Sorban az órát, a percet, a másodpercet, és az ezredmásodpercet olvassák be.
Az időzónák
Néhány függvény, amelyek a Date objektumok helyi időzónákkal való használatát teszik lehetővé:
- getTimeZoneOffset(): A helyi időzónának az UTC-től (Universal Coordinated Time; a greenwichi középidőn - GMT - alapuló középidő) való eltérését adja meg. Ebben az esetben a helyi idő az oldal látogatójának rendszerideje.
- toUTCString(): A dátumobjektumban meghatározott időpontot szöveggé alakítja, az UTC-t alapul véve. Ez a tagfüggvény a JavaScript 1.2-es változatában jelent meg és a toGMTString tagfüggvényt helyettesíti. A toGMTString még mindig működik, de használata kerülendő.
- toLocalString(): A dátumobjektumban meghatározott időpontot szöveggé alakítja, a helyi időt véve alapul.
A JavaScript 1.2-es és újabb változataiban ugyanezen függvények UTC változatait is használhatjuk. Ezek a már ismertetett tagfüggvényekhez hasonlóan működnek, de a helyi idő helyett az UTC-t veszik alapul.
- getUTCDate(): A hónap napját kérdezi le UTC időben.
- getUTCDay(): A napot kérdezi le UTC időben.
- getUTCFullYear(): Az évet kérdezi le UTC időben.
- getUTCMonth(): A hónap lekérdezésére szolgál, UTC időben.
- getUTCHours(), getUTCMinutes(), getUTCSeconds(), getUTCMilliseconds(): Sorban az órát, a percet, a másodpercet és az ezredmásodpercet olvassák be UTC időben.
- setUTCDate(), setUTCFullYear(), setUTCMonth(), UsetTCHours(), setUTCMinutes(), setUTCSeconds(), setUTCMilliseconds(): Az időt és a dátumot állítják be UTC időben.
Átalakítás a dátumformátumok között
A Date objektum két különleges tagfüggvénye lehetővé teszi, hogy a dátumformátumok között átalakításokat végezzünk. Ezeket nem az általuk létrehozott és elnevezett dátumobjektumokkal, hanem magával a beépített Date objektummal kell használnunk:
- Date.parse(): Szöveges dátummeghatározást (például June 20, 1996) a Date objektum adatformátumára, azaz az 1970. január 1. óta eltelt ezredmásodpercekre alakítja át.
- Date.UTC(): A fenti ellenkezőjét teszi, azaz egy Date objektumértékét (az 1970. január 1. óta eltelt ezredmásodperceket) szöveges dátummeghatározássá alakít át, az UTC (GMT) időt alapul véve.
Harmadik féltől származó programkönyvtárak
A JavaScript részét nem képező, más készítőktől származó programkönyvtárak arra valók, hogy kis mennyiségű kóddal is képesek legyünk bonyolult
dolgokat elvégezni.
Egy ilyen programkönyvtár használata általában csak annyiból áll, hogy egy vagy több fájlt a webhelyünkre másolunk, és a könyvtár
betöltéséhez beillesztünk egy elemet az oldalunk kódjába.
Prototype
A Prototype készítője Sam Stephenson: segítségével egyszerűbbé tehetjük a DOM
objektumokkal való munkát, az űrlapokon szereplő adatok kezelését, illetve a távoli parancsfájlok futtatását
(AJAX). Csak be kell illesztenünk a prototype.js fájlt a kívánt dokumentumba,
és máris hozzájutunk a JavaScript alapszolgáltatásait bővítő csomaghoz.
Ha egy weblapon szereplő elem DOM objektumát például document, getElementByID tagfüggvénnyel szeretnénk lekérdezni,
ennek a függvénynek egy továbbfejlesztett változatát megtaláljuk a Prototype-ban $( ) néven. Ezt nem csak egyszerűbb beírni,
hanem többet is tud, mint az eredeti beépített függvény, és több objektummal is működik.
Ha a Prototype csomagot használatba szeretnénk venni a weblapjainkon, csak egy fájlra, a prototype.js-re lesz szükségünk,
illetve egy script elemre:
<script type="text/javascript" src="prototype.js">
</script>
A Prototype ingyenes, nyílt forrású szoftver, amely letölthető a hivatalos webhelyéről, a
http://www.prototypejs.org/ címről.
Script.aculo.us
A Thomas Fuchs készítette Script.aculo.us programkönyvtár függvényei leegyszerűsítik a "Húzd-és-ejtsd" típusú műveleteket.
Például egy lista elemeinek ilyen átrendezését, valamint olyan különleges hatásokat is találunk benne (Combination Effect),
amelyekkel kiemelhetünk egyes elemeket, vagy animált átmeneteket hozhatunk létre, például rövid időre sárgával kiemelhetjük
oldalunk új részét, hogy felhívjuk rá a felhasználó figyelmét vagy eltereljük, hogy az oldal egy része elhalványuljon,
esetleg kiússzon a képernyőről.
Miután beépítjük a megfelelő fájlokat, a különleges hatásokat ugyanolyan egyszerűen használatba vehetjük, mint a JavaScript
bármelyik beépített függvényét. Az alábbi utasítások például a Script.aculo.us segítségével elhalványítanak egy elemet az oldalon:
obj = document.getElementById("test");
new Effect.Fade(obj);
A Script.aculo.us a Prototype keretrendszerre épül, és annak minden függvényét tartalmazza, így a fenti kód még tovább egyszerűsíthető:
new Effect.Fade($("test"));
Egyéb programkönyvtárak
- Dojo (http://www.dojotoolkit.org): nyílt forrású eszközkészlet, amely az alkalmazások és felhasználói felületek elkészítését teszi egyszerűbbé új karakterlánc-kezelő és matematikai függvényekkel, illetve animációs és AJAX-képességekkel.
- Yahoo! UI Library (http://www.developer.yahoo.net/yui/): A Yahoo mindenki számára elérhetővé tett, nyílt forrású fejlesztése. Szolgáltatásai az animációs és DOM-lehetőségektől az eseménykezelésen keresztül az olyan könnyen használható felhasználó felületi elemekig terjednek, mint a naptárak és csúszkák.
- MochiKit (http://mochikit.com): Könnyűsúlyú programkönyvtár, amely a DOM-mal, a CSS színekkel, a szövegformázással és az AJAX-szal végzett munkát segíti, valamint lehetővé teszi a naplózást a hatékonyabb hibakezeléshez.