Professional Documents
Culture Documents
Uvod
(X)HTML u jednom trenutku postaje ograniavajui faktor Potrebna je nova tehnologija za realizaciju dinamikih delova aplikacije
Uvod
Decembar 1995.god, Netscape i Sun su predstavili JavaScript 1.0, originalno nazvan LiveScript Microsoft prati sa jezikom JScript ECMAScript 1.0, kasnije ISO/IEC 16262 standard Danas Netscape, odnosno Mozilla, i Microsoft standardi su identini u preko 95% sluajeva
Reference
Trenutno je aktuelan Javascript 1.8, koji je opisan u standardu ECMAScript verzija 3, sa ekstenzijama. www.w3schools.com www.ecma-international.org https://developer.mozilla.org/en/JavaScript David Falangan, JavaScript: The Definitive Guide, O'Reilly Media, Inc., 5th edition, August 17, 2006 www uopte
Osobine
Platformski neutralan Modularno programiranje Integrisanost sa (X)HTML-om Nema velikih slinosti sa Javom
1. Osnove JavaScript-a
Tag Komentari Prikaz Promenljive i njihovi tipovi Operatori Funkcije Objekti
Izvravanje koda
U okviru (X)HTML koda: <script type=text/javascript"> ...JavaScript kod; </script> Ili u eksternom fajlu: <script type=text/javascript" src=" jskod.js"> </script> Ili nekad bez script taga Naredba se zavrava taka zarezom ;
Komentari
Za komentar jedne linije - oznaka // : // komentar u jednoj liniji ...
Za komentar vie redova - /* za poetak bloka pod komentarom i */ za kraj bloka pod komentarom: /* komentar u vie redova... */
Prikaz - write
Primer: <script type=text/javascript"> document.write(<b>Prvi red</b><br /><i>Drugi red</i>); </script> Rezultat primera: Prvi red Drugi red
Promenljive
Sadre vrednosti koje program smeta u okviru memorije raunara Da bi se koristile u okviru programa:
Imena promenljivih
Ime koje se dodeljuje promenljivoj se naziva i identifikator Pravila i konvencije pri imenovanju promenljivih:
Identifikator mora poinjati slovom, znakom dolar ($), ili donjom crtom ( _ ) U okviru imena se mogu koristiti brojevi, ali ne kao prvi karakter Ne mogu se koristiti prazna mesta u okviru imena Ne mogu se koristiti rezervisane rei za identifikatore
var
U okviru JavaScript jezika, rezervisana re se koristi za kreiranje promenljivih Kreiranje promenljive se naziva i deklaracija promenljive Da bi se dodelila odreena vrednost ili da bi se inicijalizovala promenljiva koristi se sintaksa:
Tipovi podataka
Specifina kategorija informacija koje se sadre u okviru promenljive Pomae da raunar odredi koliko je prostora potrebno da bi se smestila odreena promenljiva Tip podataka definie i vrstu operacija koje se mogu izvriti sa datom promenljivom
Null vrednost
Vrednost null je
Tip podataka/vrednost koja se moe dodeliti promenljivoj Pokazuje da promenljiva ne sadri nikakvu korisnu vrednost Vrednost null se dodeljuje promenljivoj kada se eli definisati da promenljiva ne sadri nikakav podatak
Deklaracija tipova
JavaScript interpreter
Automatski prepoznaje koji tip podataka je smeten u okviru promenljive Dodeljuje tip podatka promenljivoj dinamiki
JavaScript je case sensitive jezik. Tipovi podataka koji su podrani su celobrojni brojevi, racionalni brojevi, stringovi i logiki tip. Celobrojni brojevi se mogu koristiti sa brojnom osnovom 10, 8 ili 16. Racionalni brojevi - 3.14, 314E-2 ili 314e-2. String predstavlja proizvoljan niz karaktera izmeu navodnika (neki tekst) ili apostrofa (neki tekst).
Operatori
Aritmetiki Na nivou bita Relacionalni Logiki
Aritmetiki operatori
Operator Opis Operator Opis
+
* / % ++
sabiranje
oduzimanje mnoenje deljenje moduo inkrement
+=
-= *= /= %= --
sabiranje dodela
oduzimanje dodela mnoenje dodela deljenje dodela Moduo dodela dekrement
Aritmetiki operatori
a = 1 + 1; b = a * 3; c = b / 4; d = b a; e = -d; document.write(a, b, c, d, e, su , ,a, ,b, ,c, ,d, ,e); Nakon izvravanja prethodnog primera dobija se sledei tekst na ekranu: a, b, c, d, e, su 2 6 1.5 4 -4
Na nivou bita
Operator Upotreba Opis
Logiko I (AND)
Logiko ILI (OR) Logiko eksluzivno ILI (XOR) Logiko NE (NOT) Pomeranje ulevo Pomeranje udesno sa znakom Pomeranje udesno sa nulama
a&b
a|b a^b ~a a << b a >> b a >>> b
Na nivou bita
15
& 9 rezulat 9 (1111 & 1001 = 1001) 15 | 9 rezulat 15 (1111 | 1001 = 1111) 15 ^ 9 rezulat 6 (1111 ^ 1001 = 0110)
Logiki operatori
Operator I (&&) ILI (||) NE (!) Upotreba expr1 && expr2 expr1 || expr2 !expr Opis Rezultat je true, jedino ako su oba operanda true, u ostalim sluajevima rezultat je false. Rezultat se dobija false, jedino ako su oba operanda false, u ostalim sluajevima rezultat je true. Rezultat se dobija komplement od vrednosti operanada. Ako je operand true, rezultat je false, ako je operand false, rezultat je true
Logiki
a = true; b = false; c = a || b; d = a && b; f = (!a && b) || (a && !b); g = !a; document.write( " a = " + a + "<br />" ); document.write ( " b = " + b + "<br />" ); document.write ( " c = " + c + "<br />" ); document.write ( " d = " + d + "<br />" ); document.write ( " f = " + f + "<br />" ); document.write ( " g = " + g); Rezultat izvravanja prethodnog primera je: a = true b = false c = true d = false f = true g = false
Operatori poreenja
Operator Jednakost (==) Nejednakost (!=) Vee (>) Vee ili jednako (>=) Manje (<) Manje ili jednako (<=) Jednako bez konverzije tipova (===) Razliito bez konverzije tipova (!==) Upotreba Rezultat je true ako su operandi jednaki Rezultat je true ako su operandi razliiti. Rezultat je true ako je levi operand vei od desnog operanda. Rezultat je true ako je levi operand vei ili jednak desnom operandu Rezultat je true ako je levi operand manji od desnog operanda Rezultat je true ako je levi operand manji ili jednak desnom operandu Rezultat je true ako su operandi jednaki bez konverzije podataka Rezultat je true ako su operandi razliiti bez konverzije podataka Opis x == y rezultat je true ako su x i y jednaki. x ! = y rezultat je true ako su x i y razliiti. x > y ako je x vee od y. x >= y ako je x vee ili jednako y. x < y rezultat je true ako je x manje od y. x <= y rezultat je true ako je x manje ili jednako y. x === y rezultat je true ako su x i y jednaki bez konverzije podataka x !== y rezultat je true ako su x i y razliiti bez konverzije podataka
Operatori poreenja
a = 4; b = 1; c = a < b; d = a == b; document.write( c = + c + <br /> ); document.write ( d = + d ); Rezultat izvravanja prethodnog primera je c = false d = false
Funkcije
Funkcije su korisne jer ine program preglednijim i lakim za auriranje Kao i bilo koji drugi JavaScript kod, funkcije se moraju definisati u okviru <script> elementa Funkcija se sastoji iz deklaracije funkcije i njenog poziva
Deklaracija funkcija
Deklaracije funkcije se moe nai u zaglavlju i telu (X)HTML koda, ali preporuivo je da se smesti u zaglavlje (X)HTML koda. Sintaksa za definisanje funkcije je : function imeFunkcije(parametri) { naredbe; }
Pozivanje funkcije
Da bi se izvrila funkcija potrebno ju je pozvati sa odreenog mesta u okviru programa Funkcija se poziva njenim imenom i specifikacijom argumenata u okvir zagrada Vrednosti argumenata se prosleuju odgovarajuim parametrima funkcije u skladu sa deklaracijom funkcije
Naredba return
Ugraene funkcije
Na primer:
eval(string) tretira string kao naredbu string(objekat) pretvara objekat u string number(objekat) pretvara objekat u broj parseInt(string[, osnova]) pretvara string u celobrojnu vrednost sa specificiranom osnovom parseFloat(string) pretvara string u realni broj itd.
Primer
Primer deklaracije funkcije: function calculate(a,b,c) { d = (a+b) * c; return d; } Primer poziva funkcije: var x = calculate(4,5,9); document.write("x je ", x, "<br />"); var y = calculate((x/3),3,5); document.write("y je ", y); Rezultat primera: x je 81 y je 150
Objekti
JavaScript podravaju objekte kao strukture podataka Objekti se definiu pomou funkcija Za svaki objekat su vezane osobine i metode Osobine su promenljive kojima se dodaju odreene vrednosti Metode su funkcije u okviru objekata kojima mogu da se menjaju njihove osobine
function izrPovrsinu() { return ( Math.PI * this.radius * this.radius ); } function pomeriKrug(xPom,yPom) { this.xkord += xPom; this.ykord += yPom; }
Korienje metoda
Primer korienja metoda iz prethodnog primera: var testkrug = new mojkrug(3,4,5); testkrug.pomeri(2,3); document.write( Povrina kruga je ' + testkrug.povrsina() ); document.write( <br />Obim kruga je ' + testkrug.obim() ); Rezultat prethodnih komandi je: Povrina kruga je 78.53981633974483 Obim kruga je 31.41592653589793
Ugraeni objekti
Array - niz RegExp uzorci za pretraivanje String - znakovni niz Date vreme Event objekti koje generiu dogaaji Boolean logika promenljiva Math - Matematiki objekt DOM (X)HTML i JavaScript objekti
2. Kontrola toka
Izlazi iz blokova
With naredba
Ternarni operator
Sintaksa: logIzraz ? izraz1 : izraz2 gde je izraz log_izraz bilo koji izraz iji rezultat je vrednost logikog tipa. Ako je rezultat izraza true, onda se izvrava izraz1, u suprotnom izraz2. Primer: kolicnik = (imenioc ==0 ? 0 : brojioc/ imenioc)
Kontrole toka - if
Sintaksa: if (logIzraz) {naredbe1;} [else {naredbe2;}]
Primer: if (x == 8) {
else { }
y=x;
z=x; y=y*x;
Kontrola toka - if
Jo jedan primer: if (mesec == 1) ime_meseca = Januar; else if (mesec == 2) ime_meseca = Februar; else if (mesec == 3) ime_meseca = Mart; else if (mesec == 4) ime_meseca = Maj; else .... else if (mesec == 12) ime_meseca = Decembar;
Petlje - while
Sintaksa: [inicijalizacija;] while(logIzraz){ naredbe; }
Primer:
i=i+1; }
Petlje - do-while
Sintaksa: [inicijalizacija;] do { naredbe; } while (logIzraz);
Petlje - for
Sintaksa: for(inicijalizacija; logIzraz; iteracija){ naredbe; }
Petlje for-in
Sintaksa: for (imePromenljive in imeSkupa) { naredbe; } Primer: for (x in mojaKola) { document.write(mojaKola[x] + "<br />"); }
Primer: a: { b: { c: { document.writeln(pre break-a); break b; } document.writeln(ovo nee biti prikazano); } document.writeln(posle break-a); } Rezultat: pre break-a posle break-a
Primer: a: { b: { c: { document.writeln(pre break-a); break c; } documen writeln(ovo nee biti prikazano); } document.writeln(posle break-a); } Rezultat: pre break-a ovo nee biti prikazano posle break-a
Rezultat: 01 23 45 67 89
Komanda with
Primer: var a, x, y; var r=10; with (Math) { a = PI * r * r; x = r * cos(PI); y = r * sin(PI/2); }
3. Objekti
Array - niz RegExp uzorci za pretraivanje String - znakovni niz Date vreme Event objekti koje generiu dogaaji Math - Matematiki objekt DOM HTML i JavaScript objekti
Mogu se nai na
Niz
Niz je objekat koji se sastoji iz vie elemenata Niz se kreira pomou rei new i konstruktora Array() na sledee naine:
var imeNiza = new Array(); imeNiza = new Array(element0, element1, ..., elementN); Primeri:
var mojaKola=new Array(Honda","Volvo","BMV");
Osobina je length koja predstavlja broj elemenata u nizu Neke od interesantnih metoda su:
concat spajanje dva niza join pretvaranje niza u string sort sortiranje niza reverse obrtanje redosleda slice biranje izabranih elemenata push dodavanje elementa na kraj pull uzimanje poslednjeg elementa
Datum
Datum je objekat koji nosi informaciju o datumu i vremenu Konstruktor objekta datum je Date, te se vreme instancira na sledee naine: imeDatuma = new Date(); imeDatuma = new Date(datumString); imeDatuma = new Date(godina, mesec, dan) imeDatuma = new Date(godina, mesec, dan, sat, minut, sekund);
Datum
Primer: document.write(Date()); Rezultat primera: Sat Mar 21 2009 22:57:30 GMT+0100 (Central Europe Standard Time)
Konstruktor Date(datumString) za argument moe imati bilo koji string koga moe da protumai metoda parse GMT (Greenwich Mean Time) odnosno UTC (Universal Coordinated Time) su referentna vremena
Brojni su metodi objekta datum: getDate, getDay, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds, getTime, getTimezoneOffset, getUTCDate, getUTCDay, getUTCMonth, getUTCFullYear, getUTCHours, getUTCMinutes, getUTCSeconds, getUTCMilliseconds, getYear, parse, setDate, setFullYear,...
Uzorak
Uzorak je niz znakova i specijalnih znakova Konstruktor objekta uzorak je RegExp, meutim on ne mora da se koristi: imeUzorka = new RegExp(mustra, atributi); var imeUzorka = /mustra/atributi; Gde je mustra niz znakova i specijalnih znakova, a atributi su znakovi koji specificiraju nain apliciranja mustre. Specijalni znakovi se koriste da bi se definisao izraz koji se trai u tekstu.
Deklaracija uzoraka
Predstavlja pojavljivanje
Bilo kog karaktera od onih koji su navedeni izmeu [ i ]. Bilo kog karaktera koji nije naveden izmeu [ i ]. Bilo kog karaktera osim nove linije Bilo kog ASCII definisanog slova. Bilo kog karaktera koji nije ASCII definisano slovo. Bilo koje ASCII definisane cifre Bilo kog karaktera koji nije ASCII definisana cifra Blanko znak Koji nije blanko znak
Primeri uzoraka
/[abc]/ predstavlja jedno pojavljivanje simbola a ili jedno pojavljivanje simbola b ili jedno pojavljivanje simbola c. /[^abc]/ predstavlja karakter koji nije simbol a ili b ili c. /\d\d\d\d\d/ Pomou ovog uzorka se definie broj koji se sastoji od 5 cifara
Ponavljanje prethodne grupe jednom ili vie puta. Isto dejstvo kao i {1,}.
Ponavljanje prethodne grupe nijednom ili vie puta. Isto dejstvo kao i {0,}. Alternative. Pojavljivanje izraza sa desne ili pojavljivanje izraza sa leve strane.
Grupisanje simbola u jedan objekat nad kojim se mogu koristiti oznake *, +, ?, |, itd.
Pretraga uzorka se obavlja na poetku stringa Pretraga uzorka se obavlja na kraju stringa
Primeri uzoraka
/\d{2,4}/ // uzorak koji oznaava 2, 3 ili 4 pojavljivanje cifara /\w{3}\d?/ // uzorak koji oznaava tano tri pojavljivljavanja slova i opciono jedne cifre, npr. string koji odgovara ovom uzorku je abc8 ili qqq. /\s+java\s+/ // uzorak koji oznaava string "java" sa jednim ili vie prostora pre ili posle stringa /[\"]/ // uzorak koji oznaava karakter navoda /ab|cd|ef/ // uzorak koji oznaava pojavljivanje ab ili pojavljivanje cd ili pojavljivanje ef /\d{3}|[a-z]{4}/ // uzorak koji oznaava pojavljivanje tri cifre ili 4 mala slova /java(script)?/ // uzorak koji oznaava pojavljivanje stringa java ili stringa javascript /(ab|cd)+|ef)/ // uzorak koji oznaava pojavljivanje stringa ef ili pojavljivanje jednom ili vie puta stringa ab ili pojavljivanje jednom ili vie puta stringa cd
Atributi uzoraka
Atribut i Znaenje Izvravanje case-insensitive ispitivanja. Izvrava globalno ispitivanje, znai pronai e se sva pojavljivanja definisanog uzorka, a nee se ispitivanje zaustaviti posle prvog pronalaska uzorka. Rad sa vie linija. ^ oznaava poetak linije ili stringa, a $ predstavlja kraj linije ili stringa.
Primer - exec
Primer: var mojUzorak = /d(b+)(d)/ig; var rezultat = mojUzorak.exec("cdbBdbsbz"); document.write(rezultat); Rezultat primera: dbBd,bB,d
Primer - exec
String
String je objekat koji sadri niz znakova Konstruktor objekta string je String, meutim on ne mora da se koristi: imeStringa = new String(string); var imeStringa = string; Gde je string niz znakova pod navodnicima;
Osobina objekta length izraunava broj znakova u stringu, i ima istu sintaksu kao i kod objekta niz Brojni su metodi objekta string:
big, small, bold, italics, fontcolor, fontsize, toLowerCase, toUpperCase, sub, sup,...
Math
Math je objekat ije su osobine matematike konstante, a metode su matematike funkcije Matematike konstante: var imePromenljive = Math.osobina; Matematike funkcije: var imePromenljive = Math.metoda(imePromenljive1,imePromenljive2, ); Promenljive u okviru Math objekta su brojevi, a argumenti metoda mogu biti i konstante.
Objekat Event
Objekat Event se generie automatski kada god se desi neki od dogaaja Svaki objekt generisan usled nekog dogaaja ima svoje osobine
Dogaaji
Kod onBlur onClick onChange onFocus onLoad onMouseOver onMouseOut onSelect onSubmit onUnload onReset onError onAbort Nastaje kada korisnik... izae iz fokusa elementa forme ili frejma ili prozora klikne na dokument, element forme ili link promeni vrednost izabranog elementa forme ue u fokus nekog elementa forme, frejma ili prozora uita stranicu u brauzer pree pokazivaem mia preko linka ili povrine izae kurzorom mia sa odreene povrine ili linka izabere tekstualno polje elementa forme izvri slanje forme napusti stranicu resetuje sadraj forme dobije greku prilikom uitavanja slike ili stranice prekine uitavanja slike ili stranice
DOM objekti su
window aktivni prozor navigator daje info o brauzeru history istorija brauzovanja screen podaci o ekranu location rad sa URL-om document aktivni dokument je HTML DOM objekat svi HTML elementi su HTML DOM objekti
attributes[] niz atributa elementa childNodes[] niz dece elementa className ime klase elementa id id elementa innerHTML sadraj elementa nodeName ime entiteta nodeValue vrednost entiteta parentNode roditelj entiteta style stil elementa ...
Osim zajednikih svaki objekat ima svoje osobine i metode Specifine osobine (X)HTML elemenata kao objekata su jednake njihovim atributima, dok su osobine elementa <style> jednake CSS osobinama Detekcija dogaaje su takoe metodi odreenih (X)HTML elemenata
ETF
Rezultat primera:
href=www.etf.rs id=link
open, close alert, confirm, prompt popup prozorii resizeBy, resizeTo promena veliine moveBy, moveTo pomeranje prozora scrollBy, scrollTo - skrolovanje focus fokusiranje prozora setInterval, setTimeout rad sa tajmerima
Metodi su
alert-prozori upozorenja sa OK dugmetom confirm-prozori upozorenja sa OK i otkai dugmiima prompt-prozori u koji se moe upisati tekst
height width availHeight visina bez tulbarova availWidth irina bez tulbarova pixelDepth broj bita boje po pixelu bufferDepth broj bita boje u baferu updateInterval interval osveavanja ekrana
Objekat document je dokument sa kojim radimo i preko njega pristupamo svim njegovim elementima. Osobine anchors, images, links i forms su nizovi koji sadre odgovarajue elemente Skalarne osobine su: cookie, domain, lastModified, referrer, title, URL Metodi su: open, close, write, writeln, getElementsByName, getElementsByTagName
Kolai - cookie
Cookie su tekstualni fajlovi koje brauzer alje klijentu kao njegov ID Format koji cookie fajl mora da zadovolji je: ime=vrednost[;expires=datum] [;domain=imeDomena] [;path=putanja] [;secure][;httpOnly]
Kolai - cookie
ime - ime koje definie upisani cookie vrednost - je upravo informacija koja se eli zapamtiti datum - je datum koji definie do kada cookie ostaje upisan na klijentskoj maini. imeDomena - definie jedini domen sa kog cookie moe da se ita i da mu se menja vrednost putanja - definie jedinu putanju sa koje cookie moe da se ita i da mu se menja vrednost. secure - upis i itanje cookie se izvrava preko posebnih, bezbednijih kanala Atributi kolaia expires, domain, path, secure, httpOnly su opcione i nije bitan redosled u kom se pojavljuju.