Upload
nikola-nojic
View
66
Download
0
Embed Size (px)
DESCRIPTION
JAVA SCRIPT
Citation preview
1
JavaScriptJavaScriptProgramiranje Internet aplikacija
dr Nenad Jovanović2009. godina
© N. Jovanović, 2009
2
UVODUVOD
• JavaScript je jezik koji je namenjen upotrebi na webu kako bi definisao dinamičke sadržaje na web stranici.
• Službeno ime JavaScripta je ECMAScript. Standard je donela organizacija ECMA International (European Computer Manufacturers Association) 1997 god., a ISO ga je prihvatio 1998 god.
• Jezik je razvio Brendan Eich za Netscap Navigator 2.0 (1996.).
• JavaScript kod se izvršava u web browser-u, pa se ovakav oblik programiranja naziva programiranje na klijentskoj strani (eng. client side scripting).
• Važno: JavaScript i Java su dva različita jezika sa sličnom sintaksom.
©© N. Jovanović, 2009 N. Jovanović, 2009
3
JavaScript može…JavaScript može…
• Da ubaci dinamički sadržaj na web stranicu• Da reaguje na događaje (npr. klik miša, . . . )• Da čita i menja sadržaj HTML dokumenta• Da izvrši validaciju podatka• Da detektuje koji browser korisnik koristi• ...
©© N. Jovanović, 2009 N. Jovanović, 2009
4
OSNOVEOSNOVE
• JavaScript je case sensitive odnosno razlikuje velika i mala slova.
• Komande se razdvajaju prelaskom u novi red ili znakom ”;”.
• Znak ”;” na kraju linije nije obavezan, ali je uobičajen.
• Blokovi se (kao i u Javi) odvajaju vitičastim zagradama ”{ i } ”.
• Komentari (kao u Javi) pišu se unutar oznaka /* i */ ili nakon //.
©© N. Jovanović, 2009 N. Jovanović, 2009
5
GGdde e staviti JavaScriptstaviti JavaScript kod? kod?
• JavaScript se ubacuje unutar HTML dokumenta. To možemo izvesti na dva načina.
• Prvi način, koji je pogodan za kratke kodove, je da kod ubacimo unutar tagova
<script type="text/javascript"> i </script>• Veće kodove možemo snimiti unutar
posebne “.js ” datoteke, i onda ga unutar HTML dokumenta uključiti pomoću
<script src="skript.js" />
©© N. Jovanović, 2009 N. Jovanović, 2009
6
Načini izvršenja skripta unutar taga <SCRIPT>...</SCRIPT>Načini izvršenja skripta unutar taga <SCRIPT>...</SCRIPT>
• Ako je skript uključen u zaglavlju (head), ignorisan je do poziva
• Ako je skript uključen u telu (body), rezultat se prikazuje na web strani
• Ako je skript rukovalac događaja (handler), skript će se izvršiti kad se desi događaj
©© N. Jovanović, 2009 N. Jovanović, 2009
7
Primer 1Primer 1
<html><head>
<title>Prva JavaScript stranica</title></head><body>
<script type="text/javascript">document.write("<h1>Dobar dan!</h1>");
</script></body>
</html>
©© N. Jovanović, 2009 N. Jovanović, 2009
8
Primer 2Primer 2
<html> <head> <title>Prva JS stranica</title> </head> <body> <script type="text/javascript" src=“dok.js"> </script> </body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
9
dok.jsdok.js
document.write("<h1>Dobar dan! </h1>");
©© N. Jovanović, 2009 N. Jovanović, 2009
10
PROMENLJIVEPROMENLJIVE
• Pravila za imenovanje:– prvi znak mora biti slovo engleske abecede ili donja
crta ("_")– mogu sadržati brojeve i slova engleske abecede– velika i mala slova se razlikuju, ali, uobičajeno je da se
pišu malim slovima!– ključne reči (for, if, else, class, byte, int...) ne mogu se
koristiti u nazivu identifikatora• Promenljive nemaju tipove tj. u svaku
promenljivu možemo smestiti vrednosti bilo kog tipa. (Vrednosti imaju tipove!)
©© N. Jovanović, 2009 N. Jovanović, 2009
11
Deklarisanje promenljivihDeklarisanje promenljivih
var a;var x = 5;var auto ="Volvo";
• Promenljive možemo deklarisati na bilo kom mestu u kodu.
• Promenljive se ne moraju deklarisati. • U slučaju da promenljiva nije
deklarisana, njeno prvo korišćenje smatra se deklaracijom.
©© N. Jovanović, 2009 N. Jovanović, 2009
12
Aritmetički oAritmetički operatoriperatori
©© N. Jovanović, 2009 N. Jovanović, 2009
13
Logički oLogički operatoriperatori
©© N. Jovanović, 2009 N. Jovanović, 2009
14
Operatori dodeleOperatori dodele
©© N. Jovanović, 2009 N. Jovanović, 2009
15
SelekcijeSelekcije
• if..else kao u Javi• switch kao u Javi
©© N. Jovanović, 2009 N. Jovanović, 2009
16
If ... elseIf ... else
if (uslov){ ...blok A...}else { ...blok B...}
• omogućuje uslovno izvođenje dela programa ako je zadovoljen odgovarajući izraz
• else grana se izvršava ako ni jedan od prethodnih izraza nije zadovoljen
©© N. Jovanović, 2009 N. Jovanović, 2009
uslov
blok A blok B
17
PrimerPrimer 3 3
<SCRIPT LANGUAGE="JavaScript"> <!-- var datum = new Date();
var sat = datum.getHours();
if (sat > 5 && sat < 13){ document.write('<BODY BGCOLOR="blue">Dobro jutro!') }if (sat > 12 && sat < 19){
document.write('<BODY BGCOLOR="green">Dobar dan!')}
if (sat > 18 || sat < 6){ document.write('<BODY BGCOLOR="silver">Dobro veče!')}--></SCRIPT>
©© N. Jovanović, 2009 N. Jovanović, 2009
18
Uslovni izraziUslovni izrazi
• Uslovnim izrazom možemo prihvatiti jednu od dve vrednosti navedene u uslovu. Evo sintakse i primera:
(uslov) ? izraz1 : izraz2status = (prosek <= 8) ? "placaju" : "besplatno"
• Ako je uslov istinit (true), izraz ima vrednost izraz1, u suprotnom ima vrednost izraz2.
©© N. Jovanović, 2009 N. Jovanović, 2009
19
switchswitch
switch (izraz){case konstanta1:
...naredbe... break
case konstanta2: ...naredbe... break
default: ...naredbe ako nije zadovoljen ni jedan uslov
}
©© N. Jovanović, 2009 N. Jovanović, 2009
20
PrimerPrimer 4 4<html><head></head><body> <script type="text/javascript">
var datum=3;switch(datum){
case 1:{document.write("Ponedeljak!");break
} case 2:{document.write("Utorak!");break
} case 3:{document.write("Sreda!");break
} case 4:{document.write("Cetvrtak!");break
} case 5:{document.write("Petak!");break
}
default:{document.write("Pogresan unos!");
}}
</script></body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
21
PetljePetlje
• for kao u Javi• while kao u Javi• do..while kao u Javi• postoji i for..in petlja, koja omogućava efikasne
iteracije sa članovima niza.
©© N. Jovanović, 2009 N. Jovanović, 2009
22
for (inicijalizacija; test; inkrement){ ...niz naredbi...
}
– inicijalizacija, na početku petlje - inicijalizuje promenljivu (varijablu)
– na početku izvođenja svake iteracije proverava se test uslov; ako je uslov istinit, izvođenje se nastavlja inače se prekida
– na kraju svake iteracije izvršava se treći izraz - povećava/smanjuje brojač
©© N. Jovanović, 2009 N. Jovanović, 2009
23
PrimerPrimer 5 5<html>
<head></head><body>
<SCRIPT LANGUAGE="JavaScript"> for (var i = 1; i <= 10; i++){ document.write('Vrednost i = ' + i); document.write("<br>"); }</SCRIPT>
</body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
24
ZadatakZadatak
• Odštampati sve parne brojeve od 0 do 100
©© N. Jovanović, 2009 N. Jovanović, 2009
25
Zadatak Zadatak
• Izračunati faktorijel broja N
©© N. Jovanović, 2009 N. Jovanović, 2009
26
whilewhile
while (uslov) {...niz naredbi...
}
• uslov se proverava na početku izvođenja, a petlja se izvršava sve dok je zadovoljen zadati uslov
• ako uvslov nije zadovoljen na početku, program neće ni ući u petlju
©© N. Jovanović, 2009 N. Jovanović, 2009
uslovblok A
27
do ... whiledo ... while
do {
...niz naredbi...
} while (uslov);
• uslov se proverava na kraju izvođenja petlje• čak i ako izraz nije zadovoljen program će barem
jednom izvršiti petlju
©© N. Jovanović, 2009 N. Jovanović, 2009
uslov
blok A
28
breakbreak
prekida tekuću while ili for strukturu i nastavlja iza nje.
i = 0;n = 0;while (i < 5) {
i++ if (i == 3) { break}else { n += i }
}
©© N. Jovanović, 2009 N. Jovanović, 2009
29
continuecontinue
while (uslov) {if (izraz1) {
break;}else {
continue;}
}• break služi za prekidanje izvođenja petlje i nastavak izvođenja
programskog koda iza petlje• continue vraća izvođenje petlje na početak
©© N. Jovanović, 2009 N. Jovanović, 2009
30
PrimerPrimer 6 6<html>
<head></head><body> <script type="text/javascript">
var i=0;while (i<=10) {
if (i<=4) {document.write('Vrednost i=' + i + '<br />'); i=i+1;continue;
}else {
break;}document.write("KRAJ PETLJE");
}</script>
</body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
31
ZadatakZadatak
• Stampati brojeve od 0 do 100. Svaki paran broj odstampati u novom redu.
©© N. Jovanović, 2009 N. Jovanović, 2009
32
FunkcijeFunkcije
• Funkcije se definišu slično kao u Javi, ali kako promeljive nemaju tipove, ne navode se tipovi argumenata niti tip povratne vrednosti
// funkcija sa 3 argumenta:function naziv_funkcije(var1, var2, var3){ ... telo funkcije ... return vrednost}// funkcija bez argumenata:function naziv_funkcije2(){ ...telo funkcije}
• Funkcija može (ali ne mora) da ima povratnu vrednost.• Vrednost se vraća pomoću naredbe return.• Kako bi bili sigurni da se funkcija neće izvršavati dok ne bude
pozovana, potrebno je držati njihove definicije unutar head taga
©© N. Jovanović, 2009 N. Jovanović, 2009
33
PrimerPrimer 7 7<html><head></head><body> <script type="text/javascript"> var a1=3; var b1=5; var rez = povrsina(a1, b1); document.write('Povrsina pravougaonika je ' + rez);
function povrsina(a,b) { return a*b;
}</script></body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
34
ZadatakZadatak
• Napisati funkciju fakt(n), koja izračunava faktorijel broja n
©© N. Jovanović, 2009 N. Jovanović, 2009
35
NEW iskazNEW iskaz
definiše novi objekt na bazi postojećeg.
• Donji primer promenljivoj datum pridružuje tekući datum:
var datum = new Date();
©© N. Jovanović, 2009 N. Jovanović, 2009
36
THIS iskazTHIS iskaz
• referenca na tekući objekt.
• Donji primer definiše da se klikom na objekt poziva funkcija slucajniBroj() , a kao parametar se prenosi naziv tekuće forme (this.form):
onClick="slucajniBroj(this.form)"
©© N. Jovanović, 2009 N. Jovanović, 2009
37
NizoviNizovi
• Sadrže skup podataka koji je definisan u okviru jedne promenljive
• Niz se kreira pomoću reči new i konstruktora array() na sledeći način:
var imeNiza= new Array();arrayObjectName = new Array([element0,
element1, ..., elementn])
• Svaki podatak u okviru niza se naziva element
©© N. Jovanović, 2009 N. Jovanović, 2009
38
PriPrisstup elementima nizatup elementima niza
• Brojanje elemenata u okviru niza startuje sa indeksom nula (0)
• Indeks:– Numerička pozicija elementa u okviru niza
• Pojedinačnom elementu se pristupa tako što se navodi njegov indeks u okviru srednjih zagrada
©© N. Jovanović, 2009 N. Jovanović, 2009
39
Dodeljivanje vrednosti članovimaDodeljivanje vrednosti članovima
• Dodeljivanje vrednosti pojedinačnom članu niza se izvršava na isti način kao i dodela vrednosti standardnoj promenljivoj
• Jedina razlika je što se mora navesti indeks elementa kome se želi pristupiti
• Veličina niza se može dinamički menjati
©© N. Jovanović, 2009 N. Jovanović, 2009
40
PrimerPrimer 8 8
<html><body><script type="text/javascript"> var auto= new Array(); auto[0] = "Mazda"; auto[1] = "Audi"; auto[2] = "BMW"; for (i=0; i<auto.length; i++){ document.write(auto[i] + "<br />"); }</script></body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
41
ZadatakZadatak
• Napisati skript koji sortira niz X po opadajućem redosledu.
©© N. Jovanović, 2009 N. Jovanović, 2009
42
PrimerPrimer 9 9: String: String<html> <body> <script type="text/javascript"> var txt = "Hello World!"; document.write("<p>Big: " + txt.big() + "</p>"); document.write("<p>Small: " + txt.small() + "</p>"); document.write("<p>Bold: " + txt.bold() + "</p>"); document.write("<p>Italic: " + txt.italics() + "</p>"); document.write("<p>Fixed: " + txt.fixed() + "</p>"); document.write("<p>Strike: " + txt.strike() + "</p>"); document.write("<p>Fontcolor: " + txt.fontcolor("green") + "</p>"); document.write("<p>Fontsize: " + txt.fontsize(6) + "</p>"); document.write("<p>Subscript: " + txt.sub() + "</p>"); document.write("<p>Superscript: " + txt.sup() + "</p>"); document.write("<p>Link: " + txt.link("http://www.pr.ac.rs") + "</p>"); document.write("<p>Blink: " + txt.blink() + " (ovo ne redi u IE, Chrome, Safari)</p>"); </script> </body> </html>
©© N. Jovanović, 2009 N. Jovanović, 2009
43
Objekti HTML dokumentaObjekti HTML dokumenta
• JavaScript može da pristupi elementima HTML dokumenata
• Objekti su definisani HTML DOM-om (Document Object Model)– razvijen je od strane W3C-a
©© N. Jovanović, 2009 N. Jovanović, 2009
44
DOM - DOM - Document Object ModelDocument Object Model
• HTML DOM je W3C standard koji definiše kako se web stranica reprezentira pomoću skupa objekata.
• HTML DOM nije deo JavaScripta, nego se radi o posebnom standardu koji koriste scrip jezici, pa tako i JavaScript.
• Svakom elementu na stranici pridružen je jedan objekt koji ima svoja svojstva i metode pomoću kojih možemo baratati njime.
• Listu HTML DOM objekata možete naći na http://www.w3schools.com/js/js_obj_htmldom.asp
©© N. Jovanović, 2009 N. Jovanović, 2009
45©© N. Jovanović, 2009 N. Jovanović, 2009
46
DOM objektiDOM objekti
– objekti (objects) imaju odgovarajuća svojstva (properties) sa određenim vrednostima (values)body.bgColor="red" - svojstvo određuje da je boja pozadine
tela dokumenta (body objekta) crvena
– objekti reaguju na događaje (events)onclick="novaBoja()" – događaj "klik" miša pozvaće funkciju
"novaBoja() koja će promeniti boju pozadine izabranog objekta
©© N. Jovanović, 2009 N. Jovanović, 2009
47
Objekti HTML dokumentaObjekti HTML dokumenta
dokument
forme slike linkovi telo
©© N. Jovanović, 2009 N. Jovanović, 2009
48
Objekti HTML dokumentaObjekti HTML dokumenta
• Osnovni objekti HTML dokumenta:– document - svojstva sadržaja tekućeg dokumenta (naziv
(title), boja podloge (bgcolor), forme,... );– form - svojstva odgovarajuće forme;– button - svojstva odgovarajućeg dugmeta;– text - svojstva odgovarajućeg teksta;– link - svojstva odgovarajućeg linka;– this – pseudoobjekt koji se koristi za pristup onom HTML
elementu iz kog se javascript program poziva
<input name="polje1" type="text" value="12" onClick="prikazi('this.value')" />
©© N. Jovanović, 2009 N. Jovanović, 2009
49
Objekti, metodi, svojstva i događaji Objekti, metodi, svojstva i događaji
• Svaka web stranica poseduje objekte:
– window: top-level objekt; sadrži svojstva primenjiva na celokupan prozor,
– location: sadrži svojstva tekuće URL lokacije – history: sadrži svojstva prethodno posećenih URL – document: sadrži svojstva sadržaja tekućeg dokumenta,
kao što su naziv (title), boja pozadine (bgcolor), forme
©© N. Jovanović, 2009 N. Jovanović, 2009
50
Objekti, metodi, svojstva i događajiObjekti, metodi, svojstva i događaji
• Primer svojstava:
location.href = "http://www.xxx.yy/proba.html" //lokacija dokumenta
document.title = "Probni dokument" //naziv dokumenta (title)
document.fgColor = #000000 //boja slova
document.bgColor = #FFFFFF //boja podloge
history.length = 7 //koliko poslednjih dokumenta da "pamti" u history
©© N. Jovanović, 2009 N. Jovanović, 2009
51
Objekti, metodi, svojstva i događajiObjekti, metodi, svojstva i događaji
• Pretraživač može kreirati objekte bazirane na sadržaju stranice, npr.:
document.mojaforma //forma
document.mojaforma.Check1 //check polje na formi
document.bojaforma.Button1 //taster na formi
©© N. Jovanović, 2009 N. Jovanović, 2009
52
Objekti, metodi, svojstva i događajiObjekti, metodi, svojstva i događaji
• Objekti mogu imati svojstva kao što su:
document.mojaforma.action = "http://www.mm.xx/primeri/obrada.html" document.mojaforma.method = get document.mojaforma.length = 5 document.mojaforma.Button1.value = "Klikni ovde" document.mojaforma.Button1.name = taster1 document.mojaforma.text1.value = "sadržaj tekst polja" document.mojaforma.text1.name = TekstPolje1 document.mojaforma.Check1.defaultChecked = true document.mojaforma.Check1.value = on document.mojaforma.Check1.name = CheckPolje1
©© N. Jovanović, 2009 N. Jovanović, 2009
53
Objekti, metodi, svojstva i događajiObjekti, metodi, svojstva i događaji
• Mnogi objekti imaju metode koje emuliraju događaje.
• Npr, button objekat ima click metod koji emulira klik miša na tasteru...
©© N. Jovanović, 2009 N. Jovanović, 2009
54©© N. Jovanović, 2009 N. Jovanović, 2009
55
PrimerPrimer 11: 11: ispis datuma poslednje izmene web straneispis datuma poslednje izmene web strane
<HTML> <HEAD></HEAD> <BODY> Rezultat ispisa:<BR>
<SCRIPT LANGUAGE="JavaScript"> <!--
document.write("Datum poslednje izmene:"+document.lastModified+"<BR>") --> </SCRIPT> kraj primera
</BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
56
JavaScript objektiJavaScript objekti
• JavaScript poseduje izvestan skup predefinisanih objekata: Date, Array, Math. Razmotrimo ih na primeru objekta Date.
• Najpre, novi objekat se kreira upotrebom operatora NEW: danas =new Date();
• Date poseduje metode koji se mogu koristiti pri manipulaciji objektom:
getHours(), setHours() za dobijanje i postavljanje časova getMinutes(), setMinutes() za dobijanje i postavljanje minuta getMonth(), setMonth() za dobijanje i postavljanje meseca
©© N. Jovanović, 2009 N. Jovanović, 2009
57
.... sada =new Date(); document.write('Vreme je:' + sada.getHours() + ':' + sada.getMinutes() + '<br>');
document.write('Datum je:' + sada.getDate() + '/' + (sada.getMonth()+1) +'/' +(2000 + sada.getYear()));
©© N. Jovanović, 2009 N. Jovanović, 2009
58
PrimerPrimer 12 12<HTML> <HEAD> <SCRIPT><!-- var slika = '<IMG SRC="sl1.gif">' var datum = new Date() function proveraIsteka(datumIsteka){ var datIsteka = new Date(datumIsteka) if (datum.getTime() <= datIsteka.getTime()) { document.write(slika); document.write("<HR>slika ce biti vidljiva do dana:<BR>" + datIsteka); } else { document.write("<HR>slika je bila vidljiva do dana:<BR>" + datIsteka); } }//--> </SCRIPT> </HEAD> <BODY><H4>Primer slike koja je vidljiva samo do odredjenog datuma...</H4><SCRIPT> /* datum do kada zelite da slika bude vidljiva - 31. 12. 2011.! */ proveraIsteka("December 31, 2011")</SCRIPT></BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
59
ZadatakZadatak
• Napisati JavaScrip kod koji upoređuje zadati datum sa današnjim datumom.
©© N. Jovanović, 2009 N. Jovanović, 2009
60
Primer: vremensko menjanje boje pozadinePrimer: vremensko menjanje boje pozadine
• Pozadina web stranice se postavlja unutar HTML oznaka <BODY BGCOLOR="#0000FF" TEXT="#FFFFFF">
• gde BGCOLOR označava boju pozadine (od #000000 do #FFFFFF u RGB modelu boja), TEXT označava boju slova (od #000000 do #FFFFFF u RGB modelu boja).
• Obično se za boje teksta i boju pozadine uzimaju kontrastne boje ili boje sa različitim brightness tonom, npr. bela slova na crnoj pozadini, crna slova na žutoj pozadini...
• JavaScript može da pomogne da web stranica izgleda dinamičnije i da se njen izgled više puta menja u toku poseta u okviru jednog dana, ako postignete da se boje pozadine menjaju danju, u podne, noću, ujutru,...
©© N. Jovanović, 2009 N. Jovanović, 2009
61
PrimerPrimer 13 13<HTML><HEAD> </HEAD><BODY>
Primer izbora boje podloge (BODY BGCOLOR) zavisno od doba dana....<br><SCRIPT LANGUAGE="JavaScript">
<!--var datum = new Date(); /* prihvatanje tekuceg datuma u promenljivu */var sati = datum.getHours(); /* prihvat tekuceg cas u promenljivu */
if (sati > 4 && sati < 7){ document.write('<BODY BGCOLOR="#0000FF" TEXT="#FFFFFF">Sada je izmedju 5 i 7 sati ujutro...') }
if (sati > 6 && sati < 9){ document.write('<BODY BGCOLOR="#0088FF" TEXT="#FFFFFF">Sada je izmedju 7 i 9 sati ujutro...') } if (sati > 8 && sati < 18){ document.write('<BODY BGCOLOR="#808080" TEXT="#FFFFFF">Sada je izmedju 9 i 18 sati...') } if (sati > 17 && sati < 20){ document.write('<BODY BGCOLOR="#FFA500" TEXT="#FFFFFF">Sada je izmedju 18 i 20 sati...') } if (sati > 19 && sati < 22){ document.write('<BODY BGCOLOR="#FF55FF" TEXT="#FFFFFF">Sada je izmedju 20 i 22 sat...') } if (sati > 21 || sati < 5){ document.write('<BODY BGCOLOR="#FF0000" TEXT="#FFFFFF">Sada je izmedju 22 i 5 sata u...') } //--></SCRIPT> </BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
62
PrimerPrimer1414: : izbor slike pozadineizbor slike pozadine
<HTML><HEAD></HEAD><BODY><SCRIPT LANGUAGE="JavaScript">
<!-- var podloga1 = "sl1.gif" var podloga2 = "sl2.gif" var podloga3 = "sl3.gif" var slucajnibroj=Math.round(5*Math.random()) if (slucajnibroj < 2) podloga = podloga1 else if (slucajnibroj < 4) podloga = podloga2 else podloga = podloga3 document.write('<BODY BACKGROUND="'+podloga+'">')//--></SCRIPT> </BODY>
</HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
63
popup boxpopup box-ovi-ovi
• Okvir (prozor) - prikazuje se u prvom planu, na određenom mestu
• Posledica nekog događaja • Omogućuje: – Upozoravanje korisnika – Izbor - potvrđivanje ili otkazivanje – Unošenje traženih informacija – Obavezuje na neku akciju – Jednostavan mehanizam otklanjanja grešaka – Sadrži vrednost jedne promenljive – Metode: alert(), confirm(), prompt()
©© N. Jovanović, 2009 N. Jovanović, 2009
64
MetodMetodaa alert alert
• Prikazuje tekst - parametar metode u prozoru sa dugmetom OK
• Parametar: – konstantni string:
alert('niska karaktera');
ime promenljive: alert(ime_promenljive); – Konkatenacija:
alert('niska karaktera' + ime_promenljive);
©© N. Jovanović, 2009 N. Jovanović, 2009
65
MetodMetodaa confirm confirm
• Prikazuje tekst - parametar metode; • Omogućuje izbor: dugme "OK", "Cancel" • Metod vraća true za OK, false za Cancel • Zadavanje OK, Cancel akcija
• Primer: Potvrđivanje: zadavanje OK, Cancel akcija
©© N. Jovanović, 2009 N. Jovanović, 2009
66
PrimerPrimer 15 15<html><head> <script language="JavaScript" type="text/javascript">
function confirmLink() {
if (confirm("Jeste li sigurni da zelite da se povezete na sajt XX?")) {
open(“xx.html"); }
} </script> <title> Ovo je strana koja sadrzi JavaScript </title></head> <body>
<a href="http://www.google.com" onClick="confirmLink();">Klikni na adresu pretrage</a>;
</body> </html>
©© N. Jovanović, 2009 N. Jovanović, 2009
67
Metod prompt Metod prompt
• Prikupljanje informacija od korisnika • Dva parametra:
– tekst poziva, – podrazumevani tekst u polju unosa
prompt('Postavite ovde svoje pitanje','podrazumevani string'); • Dugme OK, Cancel • Metod vraća uneti string, ili NULL ako korisnik ništa ne unese • ALERT i CONFIRM dijalozi su već prikazani u prethodnim primerima. Dakle,
njihova svrha je dijalog s korisnikom, u smislu da se korisniku u posebnom dijalogu (izvan web stranice) pruža neka informacija. Ako se od korisnika (izvan polja formulara na web stranici) želi prihvatiti neki podatak, tada se koristi PROMPT.
©© N. Jovanović, 2009 N. Jovanović, 2009
68
PrimerPrimer1616
<HTML> <HEAD></HEAD> <BODY> <FORM> Primer poziva različitih vrsta dijaloga:<br> <INPUT TYPE="button" VALUE="Dijalog PROMPT!" ONCLICK="prompt('Ovo je dijalog PROMPT!\nUnesite svoje ime:')">
<INPUT TYPE="button" VALUE="Dijalog ALERT!" ONCLICK="alert('Ovo je dijalog ALERT!')"> <INPUT TYPE="button" VALUE="Dijalog CONFIRM!" ONCLICK="confirm('Ovo je dijalog CONFIRM!\n Nastavak?')"> <BR> </FORM> </BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
69
PrimerPrimer 1 177<html>
<head></head><body> <script type="text/javascript">
var a=prompt("Vase ime ", "ime");var b=confirm("Zelite li da nastavite "+a);if (b==true) { alert("Dobrodosli "+a); document.write("Dobar Vam dan "+a+ "!");}else { document.write("Dovidenja "+a);}
</script></body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
70
PrimerPrimer 18 18<HTML><HEAD><SCRIPT LANGUAGE="JavaScript">function izracunaj(nazivForme) { if (confirm("Da li zelite racunanje?")) nazivForme.rezultatPolje.value = eval(nazivForme.upisnoPolje.value) else alert("Hvala, dovidjenja do naredne posete!")}</SCRIPT></HEAD><BODY><FORM>Unesite izraz:<INPUT TYPE="text" NAME="upisnoPolje" SIZE=15 ><INPUT TYPE="button" VALUE="Izracunaj" onClick="izracunaj(this.form); return true;"><BR>Rezultat izraza:<INPUT TYPE="text" NAME="rezultatPolje" SIZE=15 ><BR></FORM></BODY></HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
71
ZadatakZadatak
• Napisati JavaScript kod koji na osnovu poluprecnika kruga, koji korisnik unosi pomoću prompt dijaloga, izračunava obim kruga i rezultat prikazuje u alert dijalogu
©© N. Jovanović, 2009 N. Jovanović, 2009
72
ZadatakZadatak
• Napisati JavaScript koji simulira kalkulator
©© N. Jovanović, 2009 N. Jovanović, 2009
73
• U sledećem primeru istovremeno se ispisuje tekst „Pozdrav” i u statusnoj liniju i u polju formulara, a nakon 20 sekundi tekst se uklanja sa oba mesta i prikazuje alert poruka.
©© N. Jovanović, 2009 N. Jovanović, 2009
74
PrimerPrimer 19 19<head><title>Untitled Document</title><HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- function ispisi(tekst, forma) { window.status = tekst; /* ispis u statusnu liniju */ forma.ispisnoPolje.value = tekst; /* ispis u polje formulara */ setTimeout("obrisi()",20000); /* poziv funkcije "obrisi" nakon 20 sec */ } function obrisi() { window.status=""; /*briše ispis u statusnoj liniji */ mojaForma.ispisnoPolje.value = ""; /*briše ispis u polju forme */ alert("Prošlo je 5 sekundi i tekst je obrisan\niz statusne trake i polja forme!"); /* parametar \n određuje prelaz u novi red! */ } // --> </SCRIPT> </HEAD> <BODY> <FORM NAME="mojaForma"> <INPUT TYPE="button" VALUE="Kliknite za ispis teksta pozdrava u statusnu liniju i polje formulara" onClick="ispisi('Pozdrav!',this.form);return true;"> <INPUT TYPE="text" NAME="ispisnoPolje" SIZE=15 > </FORM> </BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
75
Otvaranje prozora i objekti unutar njegaOtvaranje prozora i objekti unutar njega
• Kontrola otvaranja prozora se realizuje na sledeći način:window.open("proba.htm", "naziv", "menubar=no, toolbar=no,
location=no, directories=no, status=no, scrollbars=yes, resizable=yes, copyhistory=no, width=400, height=100");
• Unutar window.open(...) postoje tri para navodnika unutar kojih se nalaze sledeći podaci: – unutar prvog para navodnika upisuje se link na .html stranicu
koja se želi otvoriti (ili ostavlja prazno za blank); – unutar drugog para navodnika upisuje se opcionalni naziv
stranice (nije obavezno); – unutar trećeg para navodnika upisuju se objekti čitača
(browsera) koji se žele uključiti (=yes) ili isključiti (=no), te definiše veličina novog prozora. Evo popisa nekih od tih objekata:
©© N. Jovanović, 2009 N. Jovanović, 2009
76
• menubar meni u pretraživaču (File, Edit, …)• toolbar funkcijske ikone u navigatoru• location prozor za upis lokacije• directories meni za direktorijume• status statusna linija• scrollbars klizači unutar prozora• resizablemogućnost promene veličine• copyhistory praćenje kretanja (history)• width širina prozora (u pikselima)• height visina prozora (u pikselima)
©© N. Jovanović, 2009 N. Jovanović, 2009
77
• Takođe postoji određeni broj funkcija pomoću kojih se mogu saznati neki podaci ili postaviti određeni parametar:– window.location lokcija dokumenta– window.resizeTo(x,y) povećaj prozor do x,y– window.moveTo(x,y) premesti prozor na x,y– window.resizeBy(x,y) povećaj prozor za x,y piksela– setTimeout("funkcija()",50) poziv funkcije nakon 50 ms– screen.height visina prozora– screen.width širina prozora– screen.availHeight preostala moguća
visina– screen.availWidth preostala moguća širina– href="javascript:funkcija()" poziv funkcije kao linka
©© N. Jovanović, 2009 N. Jovanović, 2009
78
Primer 20Primer 20<HTML> <HEAD> <TITLE></TITLE> <SCRIPT LANGUAGE="JavaScript">
<!-- function otvoriProzor() { window.open("", "", "toolbar=no, location=no, directories=no, status=no, scrollbars=no, width=400, height=100"); return false; } -->
</SCRIPT>
</HEAD> <BODY>
Ovo je primer <A HREF="" onClick = "return otvoriProzor()">otvaranja prozora.</A> </BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
79
• U ovom primeru definisana je funkcija otvoriProzor() koja otvara prozor veličine 400x100 piksela, bez toolbara, scrollbara, prozora za lokaciju i statusne trake...
• Samu funkciju pozivamo sa onClick="return
otvoriProzor()" unutar <A HREF=...> (onClick svojstvo se aktivira kada kliknemo mišem na dati link).
©© N. Jovanović, 2009 N. Jovanović, 2009
80
• Naravno, od samog otvaranja prozora i ne bi imali neke koristi ako u njega ne bi mogli nešto i upisati. Podatke upisujemo naredbom: document.write("...tekst ili html naredbe...");
©© N. Jovanović, 2009 N. Jovanović, 2009
81
Primer 21Primer 21<HEAD>
<SCRIPT LANGUAGE="JavaScript"> <!-- function otvoriProzor() { noviProzor = window.open("", "", "toolbar=no, location=no, directories=no, status=no, width=400, height=100"); text = "Prvi red teksta u novom prozoru.<BR><B>Drugi red teksta.</B><BR>Treći red..." noviProzor.document.write(text); return false; } --> </SCRIPT>
</HEAD> <BODY>
Ovo je primer otvaranja <A HREF="" onClick="return otvoriProzor()">prozora</A> i upis podataka u njega.
</BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
82
Primer 22Primer 22:: upis iz tekstualne datoteke i zatvaranja prozora upis iz tekstualne datoteke i zatvaranja prozora
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> function zatvoriProzor() { mojProzor = this.window; mojProzor.close(); return false; } function otvoriProzor() { window.open("t1.txt", "", "toolbar=no, location=no, directories=no, status=no, menubar=no, scroolbars=yes, width=400,
height=200") return false; } </SCRIPT> </HEAD>
<BODY>Primer otvaranja i zatvaranja prozora...<br><br><A HREF="" onClick="return otvoriProzor()">Otvori novi prozor</A> <BR><BR><A HREF="" onClick="return zatvoriProzor()">Zatvori glavni prozor</A> <BR><BR> </BODY> </HTML>
©© N. Jovanović, 2009 N. Jovanović, 2009
83
PrimerPrimer2323: : PProvera ispravnosti e-mail adreserovera ispravnosti e-mail adrese
<html> <head><title>Provera e-mail adrese</title> <script type="text/JavaScript"> function proverimail() {
var imali = document.forma1.mail.value.indexOf("@"); if (imali == -1) {
alert("E-mail adresa nije ispravna!"); return false; } } </script> </head> <body> <form name="forma1" method="post" onSubmit="return proverimail()" > E-mail adresa: <br /> <input type="text" size="30" name="mail" /> <br /> Text: <br /> <textarea name="tekst" rows="10" cols="40"></textarea> <br /> <input type="submit" value="Pošalji" /> </form> </body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
84
Primer 24 – pomeranje elemenataPrimer 24 – pomeranje elemenata<html> <head> <title> Pomeranje elementa </title> <script type = "text/javascript"> function pomeri(elemenat, gore, levo) { dom = document.getElementById(elemenat).style; dom.top = gore + "px"; dom.left = levo + "px"; }</script> </head> <body> <form action = ""> <p> x kordinata: <input type = "text" id = "levoKord“ size = "3" /> <br /> y kordinata: <input type = "text" id = "goreKord“ size = "3" /> <br /> <input type = "button" value = "Pomeri sliku" onclick = "pomeri('testSlika', document.getElementById('goreKord').value, document.getElementById('levoKord').value)“ /> </p> </form> <div id = "testSlika" style = "position: absolute; top: 115px; left: 0;"> <img src = "sl1.jpg" alt = "(Slika)" /> </div> </body> </html>
©© N. Jovanović, 2009 N. Jovanović, 2009
85
Primer 25 - ValidacijaPrimer 25 - Validacija<html><head><script type="text/javascript">function validacijaPolja(field,alerttext) {with (field) { if (value==null||value=="“){ alert(alerttext);return false; } else { return true; } }}function validacija(forma) { validacijaPolja(forma.ime,"morate uneti ime"); validacijaPolja(forma.prezime,"morate uneti prezime");} </script></head><body><form>Ime: <input type="text" name="ime" size="30" >Prezime: <input type="text" name="prezime“ size="30" ><input type="button" value ="Proveri" onClick="validacija(this.form);"></form></body></html>
©© N. Jovanović, 2009 N. Jovanović, 2009
86
ZadatakZadatak
• Za stranicu realizovanu u datom primeru izvršiti proveru da li su sva tekstualna polja uneta
©© N. Jovanović, 2009 N. Jovanović, 2009
87
ZadatakZadatak
• Napisati JavaScript stranicu koja prikazuje tekst polje i jedno dugme. Pritiskom na dugme tekst koji predstavlja broj i koji se unosi unutar tekst polja se prihvata i zbir cifara broja se prikazuje korisniku u novom prozoru.
•
©© N. Jovanović, 2009 N. Jovanović, 2009
88
ZadatakZadatak
• Napisati kod HTML/JavaScript stranice koja prikazuje tri tekst polja i jedno dugme. U tri tekst polja korisnik unosi datum (dan, mesec i godinu, po jedan podatak u svako tekst polje). Pritiskom na dugme upisati u tekst polja sutrašnji datum.
©© N. Jovanović, 2009 N. Jovanović, 2009