Professional Documents
Culture Documents
Javascript Osnove
Javascript Osnove
elements[ ]
forms[ ]
button
anchors[ ]
checkbox
fileupload
document links[ ] hidden
password
images[ ] radio
select options[ ]
window applets[ ] submit
text
textarea
7 JavaScript
Svakom objektu ili svojstvu pristupa se kroz taj model, tj. document je
osnovni objekt preko kojeg se pristupa svim drugim objektima.
Objekt window također je važan objekt pomoću kojeg se upravlja
prozorom preglednika.
Dvije često korištene funkcije vezane su uz objekte document i window:
document.write – upisuje niz znakova koji se proslijedi kao prvi
argument u HTML dokument na mjestu gdje se funkcija poziva;
window.alert – ispisuje niz znakova koji se proslijedi kao prvi argument
u zasebnom prozoru i ne dopušta nastavak izvršavanja programa dok se ne
zatvori.
8 Osnovne karakteristike i pravila
Završetak naredbe
Znak kojim se u JavaScript -u označava kraj naredbe je točka-zarez (;).
Točka-zarez nije obavezan znak, ali se njegova uporaba preporuča.
Naime, JavaScript ubacuje "; "na kraju retka ako pojedini kôd izgleda
kao naredba, što u nekim situacijama nije ono što programer želi.
Komentari u JavaScript –u
Označavaju se jednako kao i u prog. jezicima C i C++.
// Jednoredni komentar
/* I ovo je komentar,
koji se može protezati na više redova */
10 Osnovne karakteristike i pravila
O Svojstva
b
j
Metode
e
k
t
33 Zadatak za vježbu
1. Izraditi HTML datoteku naziva varijable.html sljedećeg sadržaja:
<!DOCTYPE html>
<html lang="hr">
<head>
<meta charset="UTF-8" />
<title>Varijable</title>
</head>
<body>
<script type="text/javascript">
<!--
. . .
-->
</script>
</body>
</html>
34 Zadatak za vježbu
2. JavaScript program piši unutar elementa <script>.
3. Deklariraj varijablu iBroj i dodiijeli joj vrijednost 1.
4. Deklariraj varijablu sNiz1 i dodijeli joj vrijednost 'Niz znakova'.
5. Deklariraj varijablu sNiz2 i dodijeli joj vrijednost '3.14' .
6. Deklariraj varijablu sNiz3 i dodijeli joj vrijednost 'U dva <br/>retka'.
7. Deklariraj varijablu bLogicka i dodijeli joj vrijednost true.
8. Vrijednosti ispiši pomoću funkcije document.write.
9. Promijeni vrijednost varijable bLogicka u false te ju ponovo ispiši.
35 Rješenje:
…
<script>
var iBroj = 1,
sNiz1 = 'Niz znakova',
sNiz2 = '3.14',
sNiz3 = 'U dva<br />retka!',
bLogicka = true;
zbrajanje (+) zbraja dva broja ili spaja dva niza znakova
Operator Značenje
manji od (<) rezultat je true ako je prvi operand manji od drugoga; inače false
veći od (>) rezultat je true ako je prvi operand veći od drugoga; inače false
manji ili jednak (<=) rezultat je true ako je prvi operand manji ili jednak drugom; inače false
veći ili jednak (>=) rezultat je true ako je prvi operand veći ili jednak drugom; inače false
jednak (==) rezultat je true ako je prvi operand jednak drugom; inače false
rezultat je true ako je prvi operand jednak drugom i jednake su vrste podatka;
identičan (===)
inače false
različit (!=) rezultat je true ako je prvi operand različit od drugoga; inače false
rezultat je true ako je prvi operand različit od drugoga ili su različite vrste
ne-identičan (!==)
podatka; inače false
39 Operatori
Uspoređivati se mogu samo brojevi i nizovi znakova.
JavaScript prije uspoređivanja obavlja određena pretvaranja i to:
ako su oba operanda brojevi ili se mogu pretvoriti u brojeve, uspoređuju se kao
brojevi;
ako su oba operanda nizovi znakova ili se mogu pretvoriti u niz znakova,
uspoređuju se kao nizovi znakova;
ako je jedan operand niz znakova ili se može pretvoriti u niz znakova te ako je
drugi operand broj ili se može pretvoriti u broj, niz znakova se pokušava
pretvoriti u broj i uspoređuju se kao brojevi. Ako niz znakova nije broj, pretvara
se u NaN, tj. uspoređivanje nije uspjelo;
ako se objekt može pretvoriti u broj ili u niz znakova, JavaScript pretvara objekt
u broj. To znači da se objekti Date uspoređuju kao brojevi.
40 Operatori
ako se jedan od operanada koji se uspoređuju ne može uspješno pretvoriti u broj
ili u niz znakova, uspoređivanje je uvijek neuspješno, tj. Rezultat je false;
ako je jedan od operanda NaN, uspoređivanje je uvijek neuspješno.
Gore navedena pravila za pretvaranje tipova prilikom uspoređivanja ne
primijenjuju se za operator identičnosti (===), koji zahtijeva da dvije
varijable budu jednake i po vrijednosti i po vrsti podatka.
U sljedećem primjeru dobivaju se različiti rezultati:
var a = 2;
var b = "2";
document.write(a == b); // true
document.write(a === b); // false
41 Operatori
Logički operatori
Logički operatori povezuju dva ili više logičkih izraza i vraćaju, ovisno o
vrijednosti logičkih izraza, true ili false.
Najčešće se koriste kod složenih uvjeta za grananja i petlje.
Operatori i značenje:
&& /* logički operator I (AND) vraća vrijednost true ako su oba
izraza true, inače false
|| /* logički operator ILI (OR) vraća vrijednost true ako je barem
jedan izraz true
! // logički operator NE (NOT) vraća vrijednost true ako je izraz false
odnosno false ako je izraz true.
var a = true;
var b = false;
document.write(a && b); // false
document.write(a || b); // true
42 Operatori
Operator spajanja (konkatenacije)
Operator + spaja nizove znakova u jedan novi.
Primjer:
a = "2"; b = "2";
c = a + b; // c je 22, a ne 4!!!
VAŽNO: Operator + daje viši prioritet nizovima znakova nego brojevima.
Dakle, ako je jedan operand niz znakova, onda se i drugi operand pretvara
u niz znakova i obavlja se spajanje. Kod operatora uspoređivanja je
obratno, tj. ako je jedan operand broj, drugi se pretvara u broj i potom se
obavlja uspoređivanje.
43 Operatori
Nekoliko slučajeva za analizu:
1 + 2 /* Oba operanda su brojevi, rezultat je 3 */
"1" + "2" /* Oba operanda su nizovi znakova, rezultat
je "12 */
"1" + 2 /* Drugi operand se pretvara u niz znakova,
rezultat je "12" */
11 < 3 /* Oba operanda su brojevi, rezultat je
false */
"11" < "3" /* Oba operanda su nizovi znakova, rezultat
je true */
"11" < 3 /* Prvi operand se pretvara u broj, rezultat
je false */
"one" < 3 /* Prvi operand se pretvara u broj (postaje
Nan), rezultat je false */
44 Zadatak za vježbu
1. Izradi HTML datoteku naziva vjezba_operatori.html i unutar nje napiši program u JavaScriptu.
2. Deklariraj dvije varijable iA i iB i dodijelite im proizvoljne cjelobrojne vrijednosti.
3. Deklariraj varijable iSuma, iRazlika i iModulo koje će sadržavati redom: sumu, razliku i
modulo varijabli iA i iB.
4. Postavite inicijalne vrijednosti varijabli iSuma, iRazlika i iModulo na nulu koristeći se
operatorom pridruživanja.
5. Deklarirajte varijablu bLog.
6. Prikažite inicijalne vrijednosti varijabli iA i iB pomoću funkcije document.write.
7. Izračunaj vrijednosti varijabli iz 3. točke i prikažite ih na ekranu.
8. Inkrementiraj varijablu iA i dekrementiraj varijablu iB te prikaži nove vrijednosti varijabli iA i
iB.
9. Već izračunatoj sumi dodaj novu vrijednost varijable iA koristeći se pridruživanjem s
operacijom. Prikaži novu vrijednost varijable iSuma.
10. Varijabli bLog dodijeli rezultat usporedbe je li vrijednost varijable iA veća od 5. Prikaži
vrijednost varijable bLog.
11. Prikaži iA + iB i zaključi što se dobije kao rezultat i zašto.
12. Ispišite (iA + iB) i zaključi što se dobije kao rezultat i zašto.
45 Rješenje:
...
<script>
var iA = 16,
iB = 6,
iSuma,
iRazlika,
iModulo,
bLog;
iSuma = iRazlika = iModulo = 0;
document.write('Početna vrijednost iA: ' + iA + '<br />');
document.write('Početna vrijednost iB: ' + iB + '<br /> <br />');
iSuma = iA + iB;
iRazlika = iA - iB;
iModulo = iA % iB;
document.write('Suma: ' + iSuma + '<br />');
document.write('Razlika: ' + iRazlika + '<br />');
document.write('Modulo: ' + iModulo + '<br /> <br />');
iA++;
iB--;
document.write('iA nakon inkrementiranja: ' + iA + '<br />');
document.write('iB nakon dekrementiranja: ' + iB + '<br />');
iSuma += iA;
document.write('Sumi dodamo '+iA+' tako da je suma sada = '+iSuma+'<br/><br/>');
bLog = iA > 5;
document.write('Vrijednost varijable iA je veća od 5? ' + bLog + '<br/><br/>');
document.write('iA + iB: ' + iA + iB + '<br />');
document.write('(iA + iB): ' + (iA + iB) + '<br />');
</script>
...
46 Funkcije
Funkcija je blok koda koji se definira jednom, ali se može pozvati, odnosno
izvršavati proizvoljan broj puta. Tako skraćujemo pisanje programa i
pojednostavljujemo sam program.
JavaScript ima veliki broj ugrađenih funkcija, ali korisnik može definirati i
svoje funkcije.
Funkcije se najčešće definiraju pomoću ključne riječi function, iza koje
slijedi naziv funkcije i popis argumenata unutar malih (okruglih) zagrada.
Tijelo funkcije piše se unutar vitičastih zagrada.
Funkcija može vratiti vrijednost naredbom return, ali i ne mora.
function funkcija1 (par1, par2, par3, ...) {
naredba_1; // tijelo funkcije
naredba_2;
naredba_n;
}
47 Funkcije
Primjer jednostavne funkcije kojom se izračunava i vraća zbroj dva broja:
function obavijest() {
alert(poruka);
}
48 Funkcije
Funkcija se poziva tako što se navede njezin naziv i (eventualno) argumenti
unutar malih zagrada. Ako funkcija nema argumenata, ne navodi se ništa,
ali su zagrade obavezne.
Ako se funkciji proslijedi manje argumenata nego ih sadrži definicija
funkcije, drugi argumenti dobiju vrijednost undefined.
Ako se proslijedi više argumenata nego što funkcija očekuje, ona će
zanemariti višak argumenata.
Primjer (poziv funkcija zbroji i obavijest):
rezultat=zbroji(10, 6);
obavijest();
49 Funkcije
Doseg varijabli
Sve varijable imaju svoj doseg, odnosno oblast ili opseg važenja.
Globalne varijable su dostupne u cijelom programu, odnosno ne pripadaju
ekskluzivno ni jednoj oblasti.
Lokalne varijable su vidljive samo unutar funkcije u kojoj su deklarirane.
Blok varijable važe samo unutar bloka u kojem su definirane. Njihov
opseg važenja je omeđen vitičastim zagradama. Takve varijable se
deklariraju pomoću ključne riječi let.
50 Funkcije
Primjer 1:
// a je u globalnom prostoru
var a = 10;
// b je unutar bloka
{
let b = 20;
}
document.write(a); // a je dostupno
document.write(b); // b je nedostupno
Primjer 2:
var c = 1;
function f() {
var d = 1;
}
document.write(c + '<br>'); // c je globalna varijabla
document.write(d + '<br>'); // d nije dostupno van funkcije
51 Funkcije
Primjer 3 (Što će se ispisati na ekranu i zašto?):
var a = 10;
var b = 5;
{
let b = 20;
document.write('Rezultat=' + (a+b) + '<br>');
}
document.write('Rezultat=' + (a+b) + '<br>');
53 Kontrola tijeka programa
Uvjetno izvođenje naredbi
Osnovna naredba za grananje je naredba if, čiji je osnovni
(najjednostavniji) oblik:
if (log_uvjet) {
naredba_1;
naredba_2;
naredba_3;
…
naredba_n;
}
log_uvjet je logički izraz čiji je rezultat istina (true) ili neistina (false).
54 Kontrola tijeka programa
Ukoliko je rezultat ispitivanja logičkog uvjeta u zagradi true (ili se može
konvertiraati u true), izvršava se naredba ili niz naredbi unutar bloka.
Ukoliko je vrijednost usvjeta u zagradi false (ili se može konvertirati u,
false) naredba ili naredbe koje slijede se neće izvršiti.
Kad operandi u izrazu nisu logički, prevode se u logičke vrijednosti.
Sljedeće vrijednosti se uvijek prevode u false:
null
undefined
prazan niz znakova ('' ili "")
broj 0
NaN.
Sve druge vrijednosti prevode se u true.
.
55 Kontrola tijeka programa
Primjeri:
if (n != 0) {
suma = suma / n;
n --;
}
.
56 Kontrola tijeka programa
if … else
Ovaj oblik naredbe omogućava definiranje bloka naredbi koji će se izvršiti ako
uvjet nije zadovoljen.
if (log_uvjet) {
blok_naredbi_1; // ako je log_uvjet=true
}
else {
blok_naredbi_2; // ako je log_uvjet=false
}
Primjer: if (a > b) {
window.alert(a + ' je veće od ' + b);
} else {
window.alert(a + ' nije veće od ' + b);
}
57 Kontrola tijeka programa
if … else if … oblik (višestruka usporedba)
Primjenjuje se ukoliko je potrebno izvršiti jednu od nekoliko mogućnosti
(više od dvije) .
Osnovna sintaksa je:
if (log_uvjet1) {
blok_naredbi_1;
}
else if (log_uvjet2) {
blok_naredb_2;
}
else if (log_uvjet3) {
blok_naredb_2;
}
else {
blok_naredbi_4; //ako ni jedan uvjet nije ispunjen
}
58 Kontrola tijeka programa
Primjer:
var bod=65;
if (bod>=61 && bod<=80) {
ocjena=3;
}
else if (bod>=81 && bod<=90) {
ocjena=4;
}
else if (bod>=91) {
ocjena=5;
}
else {
alert('Nemaš pojma!!!');
}
alert('Osvojio si ' + bod + ' bodova i dobio ocjenu ' +
ocjena);
59 Kontrola tijeka programa
Naredba switch ()
Omogućava veću preglednost koda u slučajevima višestruke usporedbe,
alternativa if… else if … strukturi
Osnovna sintaksa je:
switch(n){
case 1:
// naredbe1
break;
case 2:
// naredbe2
break;
case 3:
// naredbe3
break;
default:
// naredbe4
break;
}
60 Kontrola tijeka programa
Naredba switch provjerava je li izraz u okruglim zagradama (odmah iza ključne
riječi switch) istovjetan (koristi se operator ===), dakle, i po vrsti jednak, jednoj od
vrijednosti iza ključne riječi case. Ako takva vrijednost postoji, izvršava se blok
naredbi iza te vrijednosti do kraja cijele naredbe switch ili do ključne riječi break,
koja prekida blok koji se trenutačno izvršava, tj. završava naredbu switch. Dakle,
moguće je tu naredbu napisati tako da se jedan blok izvrši za više vrijednosti:
switch(n){
case 1:
case 2:
case 3:
// naredbe1
break;
case 4:
// naredbe2
break;
default:
// naredbe3
break;
}
61 Kontrola tijeka programa
Treba pripaziti da se na kraju svakog bloka naredbi navede naredba break. Ako
se ona nehotice izostavi, neće biti prijavljena pogreška, nego će se izvršiti i
sljedeći blok naredbi.
Ako ne postoji vrijednost koja je istovjetna provjeravanom izrazu, izvršava se
blok iza ključne riječi default.
Primjer:
switch (znak) {
case '+':
z = x + y;
break;
case '-':
z = x - y;
break;
case '*':
z = x * y;
break;
case '/':
z = x / y;
break;
}
62 Kontrola tijeka programa
Uvjetni operator
Uvjetni operator jedini je operator s tri operanda u JavaScriptu:
<uvjet> ? naredba1 : naredba2;
što je jednako ovom:
if(<uvjet>)
naredba1;
else
naredba2;
Ovaj operator se najčešće koristi pri inicijalizaciji varijabli, primjerice:
sPunoIme = sIme != null ? sIme : 'No name';
63 Kontrola tijeka programa
Petlje (iteracije)
Petlja je struktura koja omogućava da se neki dio programskog koda izvrši
više puta.
Petlja while
Osnovni oblik ove petlje je:
while (log_uvjet) {
//sekvenca_naredbi
}
Tijelo petlje izvršava se sve dok je uvjet zadovoljen.
Ako uvjet nije zadovoljen prije početka petlje, njezino tijelo se neće izvesti
niti jednom.
64 Kontrola tijeka programa
Primjer:
// Suma prvih 50 prirodnih brojeva
var i = 1;
var suma = 0;
while (i <= 50) {
suma += i;
i ++;
}
Ako nema bloka naredbi uokvirenih vitičastim zagradama nakon, onda se
samo prva naredba iza while(log_uvjet) tretira kao tijelo petlje. U
sljedećem primjeru
while(i<j)
i++;
j--;
samo se naredba i ++ ponavlja unutar petlje, a naredba j -- izvršit će se
po izlasku iz petlje.
65 Kontrola tijeka programa
Petlja do...while
Osnovni oblik ove petlje je:
do {
//sekvenca_naredbi
}
while (uvjet);
Ova petlja se razlikuje od while petlje po tome što se uvjet ispituje na kraju
petlje, što znači da se naredba ili blok naredbi unutar petlje izvršavaju
najmanje jedanput.
Primjer:
// Suma brojeva od 1 - 50
var i = 1; var suma = 0;
do {
suma += i;
i ++;
} while (i <= 50);
66 Kontrola tijeka programa
Petlja for
Osnovni oblik ove petlje je:
for(<inicijalizacija>; <uvjet>; <prirast>) {
// naredbe
}
Petlja for se koristi kada je unaprijed poznat broj ponavljanja
Primjer:
JavaScript
function provjeri() {
var sIme = '';
sIme = document.getElementById('ime').value;
window.alert('Uneseno ime je: ' + sIme);
}
69 Obrasci
Prvi korak u provjeri podataka koje korisnik upisuje je provjera je li uopće
upisan podatak koji se očekuje. U tu svrhu ćemo modificirati JavaScript kod u
funkciji provjeri().
function provjeri() {
var sIme='';
sIme=document.getElementById('ime').value;
if (sIme==='')
window.alert('Niste ništa unijeli. Molim unesite ime!');
else
window.alert('Uneseno ime je: ' + sIme);
}
function provjeri() {
var sIme='';
var sPrez='';
sIme=document.getElementById('ime').value;
sPrez=document.getElementById('prezime').value;
if (sIme==="") {
window.alert('Nisu uneseni potrebni podaci.');
}
else {
window.alert('Vaše ime je ' + sIme + '\n' +
'Vaše prezime je ' +sPrez);
}
}
72 Obrasci
Funkcija za provjeru oba polja: }
if (sPrezime === '') {
function provjeri() { sPogreska += '\nPrezime je
var sIme = '', prazno!';
sPrezime = '', } else {
sPogreska = '', sPoruka += '\nPrezime je: ' +
sPoruka = ''; sPrezime;
}
sIme = if (sPogreska === '') {
document.getElementById('ime').value; window.alert(sPoruka);
sPrezime = return true;
document.getElementById('prezime').va } else {
lue; window.alert(sPogreska);
if (sIme === '') { return false;
sPogreska += 'Ime je }
prazno!'; }
} else {
sPoruka += 'Ime je: ' + sIme;
73 Obrasci
Odabir jedne od ponuđenih mogućnosti (radio buttons)
Za ilustraciju ćemo u naš obrazac dodati i element input tipa radio za
odabir spola korisnika:
…
<div>
<label for="spol">Spol</label><br>
<input type="radio"
name="spol"
value="m" />Muški
<input type="radio"
name="spol"
value="z" />Ženski
</div>
…
…
aSpol = document.getElementsByName('spol');
for (i = 0; i < aSpol.length; i++) {
if (aSpol[i].checked) {
sSpol = aSpol[i].value;
}
}
if (sSpol === '') {
sPogreska += '\nOdaberite spol!';
} else {
sPoruka += '\nSpol: ' + sSpol;
}
…
75 Obrasci
Dodavanje i obrada checkbox polja u obrascu
U obrazac ćemo dodati jedno checkbox polje
…
<div>
<input type="checkbox"
name="dob"
id="dob"/>
<label for = "dob" >
Punoljetna osoba</label>
</div>
…
Primjer:
osoba2.punoime = spoji; //definiranje metode punoime
// definiranje funkcije
function spoji(ime, prezime) {
return this.ime + ' ' + this.prezime;}
// poziv metode
document.write(osoba2.punoime(this.ime, this.prezime));
…
86 Objekti JavaScript-a
Objekti ugrađeni u JavaScript
Objekt String
Objekt String osigurava svojstva i metode za manipuliranje nizovima znakova
(stringovima).
Konstruktor String() ima opcioni argument kojim se inicijalizira objekt:
var str = new String("Pozdrav web dizajneri!");
Ukoliko se izostavi ovaj argument, konstruktor inicijalizira prazan string:
var str2 = new String();
U praksi se rijetko koristi navedeni način kreiranja String objekta, jer se sva
svojstva i metode objekta String mogu pozvati preko stringova kao osnovnih
tipova podataka.
87 Objekti JavaScript-a
var str3 = "string je standardni tip podataka u JS";
Metoda charAt()
Omogućava pristup pojedinačnim karakterima u stringu. Prihvaća cjelobrojni
argument koji određuje poziciju znaka koji će biti vraćen kao rezultat. Pozicija
prvog člana je 0, drugog 1 …
var zn = str3.charAt(5); // vratit će 6. znak u stringu str3
Metoda indexOf
Pronalazi prvo pojavljivanje podstringa (substring) i vraća njegov indeks. Ako ne
pronađe podstring kao rezultat vraća -1.
var pp = str3.indexOf("TIP"); // vratit će 21
89 Objekti JavaScript-a
Metoda substring()
Omogućava izdvajanje niza znakova koji se nalaze između zadanog početnog i
krajnjeg indeksa pozicije.
var pStr = str3.substring(0, 10);
Ako se navede samo jedan argument, onda metoda vraća niz znakova koji se
nalazie od zadane pozicije do kraja stringa.
var p1Str = str.substring(11);
Metoda charCodeAt(index)
Vraća kôd karaktera (Unicode) koji se nalazi na zadanoj poziciji.
var n=str3.charCodeAt(0); // vraća kod prvog znaka stringa
90 Objekti JavaScript-a
Metoda fromCharCode(code)
Vraća znak (karakter) čiji je kod naveden kao argument.
var zn = String.fromCharCode(83); // vratit će znak S
Metoda charCodeAt(index)
Vraća kôd karaktera (Unicode) koji se nalazi na zadanoj poziciji.
var n=str3.charCodeAt(0); // vraća kod prvog znaka stringa
Metoda concat(string)
Spaja string sa drugim stringom.
var str4='2.d ';
var str5='web dizajneri';
document.write(str4.concat(str5)); //ispisat će: 2.d web
dizajneri
91 Objekti JavaScript-a
Metoda replace(str1, str2)
Omogućava zamjenu prvog podstringa (str1) drugim (str2) u nekom nizu znakova.
var str6 = 'Programiranje u jeziku JavaScript';
var str7 = str6.replace('JavaScript', 'C++'); // zamijenit će
JavaScript sa C++
Zadatak za vježbu:
Definirati dva String objekta str1 i str2. Stringu str1 pridružiti vrijednost "Pero Perić", a
stringu str2 vrijednost "najbolji učenik 2.d razreda".
a) Ispisati stringove i njihove dužine (broj znakova);
b) Sadržaj stringa str1 pretvoriti u velika slova;
c) Iz stringa str1 izdvojiti samo prezime i spremiti ga u novi string str3;
d) Ispisati Unicode kod zadnjeg znaka u stringu str2;
e) Spojiti stringove str1 i str2 i ispisati sadržaj;
f) U stringu str2 tekst "najbolji" zamijeniti sa "najgori"
92 Objekti JavaScript-a
Objekt
Math
Sadrži svojstva i metode za rad sa složenijim matematičkim operacijama i
izrazima.
Ne sadrži konstruktor, svim svojstvima i metodama pristupa se izravno pozivom
objekta Math.
Matematičke konstante kao svojstva objekta Math():
Math.E – baza prirodnog logaritma (Napierov ili Eulerov broj) e≈2,71828
Math.LN2 – prirodni logaritam od 2, ≈ 0,693
Math.LN10 – prirodni logaritam od 10, ≈ 2,302
Math.LOG2E – logaritam od e po bazi 2, ≈ 1,442
Math.LOG10E – logaritam od e po bazi 10, ≈ 0,434
Math.PI – Ludolfov broj (), ≈ 3,14159
Math.SQRT1_2 – kvadratni korijen broja ½, , ≈ 0,707
Math.SQRT2 – kvadratni korijen broja 2, , ≈ 1,414
93 Objekti JavaScript-a
Zadatak za vježbu:
Izraditi skriptu kojom će se ispisati vrijednosti matematičkih konstanti pomoću
navedenih svojstava Math objekta. Izgled stranice s ispisom:
94 Objekti JavaScript-a
Rješenje:
<!DOCTYPE html>
<html lang="hr">
<head>
<meta charset="utf-8">
<title>Objekt Math</title>
</head>
<body>
<script>
document.write('<h2>Math objekt</h2>');
document.write('<h3>Svojstva Math objekta</h3>');
document.write('Baza prirodnog logaritma e = ' + Math.E + '<br>');
document.write('Prirodni logaritam broja 2 = ' + Math.LN2 + '<br>');
document.write('Prirodni logaritam broja 10 = ' + Math.LN10 + '<br>');
document.write('Logaritam od e po bazi 2 = ' + Math.LOG2E + '<br>');
document.write('Logaritam od e po bazi 10 = ' + Math.LOG10E + '<br>');
document.write('PI (Ludolfov broj) = ' + Math.PI + '<br>');
document.write('Kvadratni korijen broja 1/2 = ' + Math.SQRT1_2 + '<br>');
document.write('Kvadratni korijen broja 2 = ' + Math.SQRT2 + '<br>');
</script>
</body>
</html>
95 Objekti JavaScript-a
Objekt Math podržava brojne matematičke funkcije preko svojih metoda:
Math.abs(x) – izračunava apsolutnu vrijednost broja
Math.sin(x), Math.cos(), Math.tan() – trigonometrijske
funkcije sinus, kosinus, tangens (vrijednost parametra je u radijanima)
Math.asin(x), Math.acos(), Math.atan() – inverzne
trigonometrijske funkcije arkus sinus, arkus kosinus, arkus tangens (rezultat
funkcije je izražen u radijanima)
Math.exp(n) – vraća en, gdje je n argument funkcije
Math.log(x) – vraća prirodni logaritam broja – ln(x)
Math.ceil(x) – zaokružuje broj na najbliži veći cijeli broj
Math.floor(x) – zaokružuje broj na najbliži manji cijeli broj
Math.round(x) – zaokružuje broj na najbližu cjelobrojnu vrijednost
96 Objekti JavaScript-a
Math.trunc(x) – vraća samo cijeli dio realnog broja, "odsijeca" decimalni
dio
Math.max() – vraća najveći broj od više unesenih brojeva
Math.min() – vraća najmanji broj od više unesenih brojeva
Math.random() – generira pseudo slučajan broj iz intervala 0 – 1 (ne
uključuje 1)
Math.sqrt(x) – funkcija vraća kvadratni broj broja
Math.pow(x,y) – stupnjevanje, npr: Math.pow(10, 3) = 103 = 1000
97 Objekti JavaScript-a
Zadatak
za vježbu:
Izraditi skriptu kojom se omogućava unos 3 decimalna broja i obavlja sljedeće:
a) zaokružiti prvi broj na najbliži veći cijeli broj,
b) zaokružiti drugi broj na najbliži manji cijeli broj,
c) zaokružiti treći broj sukladno pravilima zaokruživanja,
d) ispisati najmanji od 3 unesena broja,
e) ispisati najveći od 3 unesena broja,
d) izračunati i ispisati rezultat izračunavanja prema sljedećem izrazu
98 Objekti JavaScript-a
Projektni zadatak:
Izraditi web aplikaciju za igru pogađanja brojeva (.html, .css i .js
datoteke).
Kratke upute:
Stvoriti skriptu koja omogućava generiranje pseudo slučajnog broja iz intervala
[0 - 10] i koja omogućava korisniku da unosi brojeve dok ne pogodi generirani
broj.
Na ekranu ispisati i iz koliko je pokušaja korisnik pogodio broj.
99 Objekti JavaScript-a
Object Date()
Objekt tipa Date() koristi se za rad sa datumom i vremenom na klijentskoj
strani.
Date() objekt vraća datum i vrijeme sa lokalnog računala, a ne sa poslužitelja.
Ne podržava datume prije 1.1.1970. godine.
Objekt tipa Date u JS –u se pravi pomoću operatora new i konstruktora
Date().
Instance objekta Date() se mogu kreirati na sljedeće načine:
new Date(); // kreira objekt koji sadrži tekući datum i
vrijeme
new Date(ms); // argument ms (milisekunde) predstavlja
broj milisekundi od 1.1.1970. 00:00:00
new Date(date_data); // argument u zagradi je datum u
odgovarajućem formatu
100 Objekti JavaScript-a
Metode objekta Date()
getDate() – vraća dan (1 – 31) u mjesecu za trenutni Date objekt;
getDay() - vraća dan u tjednu za trenutni Date objekat kao cijeli broj od 0
(nedelja) do 6 (subota);
getHours() – vraća sat (0 – 24) iz vremena za trenutni Date objekt;
getMinutes() – vraća minute (0 – 59) iz vremena za Date objekt;
getSeconds() - vraća sekunde (0 – 59) iz vremena;
getMonth() – vraća broj mjeseca (0 – 11) iz datuma;
getYear() – vraća godinu iz datuma kao cijeli broj (godina – 1900).
getFullYear() – vraća godinu iz datuma;
getTime() – vraća broj milisekundi od 1.1.1970. 00:00:00;
101 Objekti JavaScript-a
setDate(dan) - postavlja dan u mjesecu, dan je cijeli broj između 1 i 31;
setMinutes(min) - postavlja minute u vremenu Date objekta, vrijednosti od
0 - 59;
setHours(sat) – postavlja sat u Date objekt, vrijednosti od 0 – 11;
setMonth(mjesec) - postavlja mjesec za Date objekt, vrijednosti od 0 do 11;
setYear(godina) – postavlja godinu, godina>1900;
setFullYear(godina) – postavlja godinu u Date objekt, vrijednosti od 1000 –
9999. Koristi se i za postavljanja dana i mjeseca, npr.
Date.SetFullYear(2020, 3, 28);
toGMTString() – vraća vrijednost Date objekta kao string formata:
naziv_dana, d.d. mjesec godina sat:minut:sek GMT
102 Objekti JavaScript-a
Primjeri za vježbu:
1) Ispisati u pregledniku datum i trenutno vrijeme.
2) Stvoriti novu instancu objekta Date() sa sljedećim argumentom: March 28,
2020 10:22:30. Izdvojiti i ispisati dan, mjesec i godinu iz datuma, te sate,
minute i sekunde iz vremena.
3) Kreirati instancu Date objekta sa datumom tvog rođenja i instancu Date
objekta koja sadržava trenutni datum. Izdvoji i ispiši svoju godinu rođenja i
aktualnu godinu, a zatim izračunaj i ispiši koliko imaš godina.
103 Objekti JavaScript-a
Projektni zadatak
Izraditi skriptu za prikaz sata sa točnim vremenom na proizvoljnom dijelu
web stranice. Vrijeme se ažurira svake sekunde.
U izradi zadatka je potrebno koristiti metod setTimeout(funkcija,
broj_milisekundi) HTML DOM Window objekta, koja izvršava funkciju
nakon zadanog broja milisekundi.
104 Objekti JavaScript-a
Object Array()
Array() objekt se koristi za pohranjivanje skupa vrijednosti u jednoj varijabli.
Novi niz se kreira pomoću ključne riječi new i konstruktora Array().
(Konstruktor je specijalni tip funkcije koja se koristi za kreiranje instance
objekta (varijable) i vraća referencu na kreiranu instancu.)
Svaka vrijednost je element niza i ima svoj redni broj – indeks.
Pojedinom elementu se pristupa koristeći naziv niza i odgovarajući indeks, koji
se navodi unutar srednjih zagrada.
Indeks prvog elementa niza je 0, a zadnjeg (n-1), gdje je n broj elemenata niza,
105 Objekti JavaScript-a
Primjer:
var vozilo = new Array(); // definiranje niza
vozilo[0] = "Audi"; // dodavanje prvog elementa u niz
vozilo[1] = "Ford";
vozilo[2] = "VW";
Primjer:
var vozilo = new Array(3); // definiran je niz od 3 elem.
vozilo[0] = "Audi";
vozilo[1] = "Ford";
vozilo[2] = "VW";
vozilo[3] = "Mercedes"; // niz se dinamički proširuje
- sort()
Uređuje (sortira) elemente niza u izvornom nizu i vraća tako sortiran niz. Kada
se pozove bez argumenata elemente uređuje po abecednom redu.
document.write(vozilo + '<br>');
document.write(vozilo.sort()); // ispisuje sortiran niz po
abecedi
function sortNumber(a,b){
return a-b;
} //vraca vrednost <0, 0 ili >0
108 Objekti JavaScript-a
- reverse()
Ova metoda vraća niz sa obrnutim rasporedom elemenata, Naime, element a[0]
postaje a[n], a[1] postaje [n-1] …
Primjer:
var imena = new Array('Pero', 'Marko', 'Adi', 'Jana',
'Sara', 'Tamara', 'Leo', 'Adna', 'Fabs');
document.write(imena.sort() + '<br>'); // sortirani niz
document.write(imena.reverse()); // niz u obrnutom
redoslijedu
110 Objekti JavaScript-a
- join()
Primjer:
var br=[1, 2, 3, 4];
var str=br.join(); // izlaz: 1,2,3,4
document.write(str + '<br>');
var ucenici=imena.join(" *** "); // separator ***
document.write(ucenici);
111 Objekti JavaScript-a
- slice()
Vraća podniz ili isječak originalnog niza . Metoda može imati jedan ili dva
argumenta.
Primjer:
var num=[1, 2, 3, 4, 5, 6, 7];
document.write(num + '<br>');
document.write(num.slice(0, 2) + '<br>');
document.write(num.slice(4) + '<br>');
document.write(num.slice(1,7) + '<br>');
Uradi primjer.
Što si zaključio/zaključila?
112 Objekti JavaScript-a
- push()
Dodaje jedan ili više elemenata na kraj niza i vraća novu dužinu niza.
- pop()
Voditi računa da obje metode mijenjaju izvorni niz, ne prave promijenjenu kopiju niza
Primjer:
num.push(8,9,10); // dodaje nove elemente na kraj niza
document.write(num + '<br>');
num.pop(); // uklanja posljednji element niza
document.write(num + '<br>');
num.pop();
document.write(num + '<br>');
113 Objekti JavaScript-a
- toString()
Primjer:
var s = num.toString();
document.write(s + '<br>');
document.write(imena.toString() + ' su učenici II.d. <br>');
s=[num[0], num[2], num[4]].toString();
document.write(s);
114
Zadatci za vježbu (Nizovi)
https://www.w3schools.com/jsref/dom_obj_event.asp
120 Događaji (Events)
Implementiranje događaja
<div id="primjer2">
<p>Ovo je tekst prvog oglednog odlomka.</p>
<p onClick="oboji(this)"> Ovo je tekst drugog oglednog odlomka
kojem možeš promijeniti boju, način poravnavanja, veličinu znakova
i boju pozadine ukoliko dovedeš pokazivač miša iznad njega.</p>
</div>
124 Događaji (Events)
Nije praktično kada treba primijeniti određeni događaj na više istih vrsta
HTML tagova (potrebno je upisivanje koda u svaki tag);
Otežano održavanje …
125 Događaji (Events)
Preporučuje se, naročito kada je riječ o većoj količini koda, da se on ne piše unutar
HTML –a, nego u okviru eksterne JS datoteke u formi funkcija.
objekt.događaj = funkcija_obrade;
Funkcija obrade (event handler) može biti dana kao referenca na već postojeću
funkciju, koju, u općem slučaju, pozivamo sa:
objekt.događaj = funkcija;
Anonimna funkcija nema ime jer se nigdje u kodu eksplicitno ne poziva, nego se tijelo
takve funkcije podrazumijevano izvršava u liniji koda u kojoj se događaj realizira.
objekt.događaj = none;
document.getElementById("element").onclick = function () {
…
}
128 Događaji (Events)
Uradi i analiziraj sljedeći primjer:
…
<head>
<link rel="stylesheet" type="text/css" href="events2.css">
<script type="text/javascript" src="events2.js"></script>
</head>
<body>
<h1>Direktno referenciranje događaja</h1>
<div id="prvi">
Ovo je PRVI DIV. Pomjerite pokazivač miša u njegovo područje kako
biste mu promijenili svojstva.
</div>
<div id="drugi">
Ovo je DRUGI DIV. Kliknite ovdje kako biste mu promijenili
svojstva.
</div>
</body>
</html>
129 Događaji (Events)
events.css
events2.js
div {
function boja() { border: 1px solid black;
this.style.color = "yellow"; padding: 10px;
this.style.backgroundColor = "black"; font-size: 1.5rem;
} margin: 20px 0px;
max-width:50%;
}
function obrisi() {
this.style.color = "black";
this.style.backgroundColor = "white";
}
window.onload = function() {
document.getElementById("prvi").onmouseover = boja;
document.getElementById("drugi").onclick = boja;
// dvostrukim klikom unutar div elemenata „uklanjamo” boje
document.getElementById("prvi").ondblclick = obrisi;
document.getElementById("drugi").ondblclick = obrisi;
}
130 Događaji (Events)
objekt.addEventListener("događaj", funkcija);
objekt.removeEventListener("događaj", funkcija);
131 Događaji (Events)
Sve što treba napraviti je zamijeniti dio postojećeg koda u javascript datoteci sa
sljedećim:
Događaji tipkovnice
keydown tipka pritisnuta
keyup tipka otpuštena
keypress tipka pritisnuta i otpuštena
133 Događaji (Events)
Događaji forme
focus ulazak u polje forme
blur napuštanje polja forme
input unos u polje
change napuštanje polja nakon promjene sadržaja
submit slanje podataka iz forme
reset resetiranje forme
Događaji prozora
load učitavanje elemenata je završeno
error korisnik napušta stranicu
resize promijenjena veličina prozora
134
Zadatci za vježbu
1. Realiziraj zamjenu postojeće slike drugom slikom prilikom prelaska miša
preko nje. Događaj implementirati pomoću HTML atributa.
1. zadatak
<!DOCTYPE html>
<html lang="hr">
<head>
<meta charset="utf-8">
<title>Događaji: Zadatak1</title>
</head>
<body>
<img src="slika1.png" onmouseover="promijeni('slika2');"
onmouseout="promijeni('slika1');" id="slikaSite"/>
<script>
function promijeni(slika){
document.getElementById("slikaSite").src= slika + ".png";
}
</script>
</body>
</html>
136
Rješenja
2. zadatak
body>
<div id="okvir">
<p>Klikni unutar polja za unos kako bi se promijenila boja polja i tekst koji opisuje
što treba unijeti<br/>
Klikom van polja stanje se vraća na početno.</p>
<form action="#">
<input type="text" id="primjer" />
<span id="opis"></span>
</form>
</div>
<script>
document.getElementById("primjer").addEventListener("focus", function() {
document.getElementById("primjer").style.backgroundColor = "yellow";
document.getElementById("opis").textContent = "Unesi ime i prezime!";
});
document.getElementById("primjer").addEventListener("blur", function() {
document.getElementById("primjer").style.backgroundColor = "white";
document.getElementById("opis").textContent = "";
});
</script>
</body>
137
Rješenja
3. zadatak
<!DOCTYPE html>
<html lang="hr">
<head>
<meta charset="utf-8">
<title>Događaji: Zadatak3</title>
<script type="text/javascript" src="zadatak3.js"></script>
</head>
<body>
<button>Promijeni boju!</button>
</body>
</html>
zadatak3.js
function rnd(br) {
return Math.floor(Math.random() * br);
}
function bgChange() {
rndBoja = 'rgb(' + rnd(255) + ',' + rnd(255) + ',' + rnd(255) + ')';
document.body.style.backgroundColor = rndBoja;
}
window.addEventListener("load", function() {
document.querySelector("button").addEventListener('click', bgChange);
});