WEB Developer Tool
WEB Developer Tool
Tutorijal br. 3:
JavaScript
Literatura:
Tutorijal JavaScript.
Mozilla MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript
http://jsfiddle.net/ - stranica na kojoj možete isprobati kôd.
Uvod u tutorijal
Sljedeći HTML kôd snimite kao fajl digitron.html te ga otvorite u web browseru.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>Tutorijal 3, Uvod</TITLE>
</HEAD>
<BODY>
<H1>Digitron</H1>
<INPUT type="text" id="sabirak1" size="5"> +
<INPUT type="text" id="sabirak2" size="5"> =
<INPUT type="text" id="zbir" size="5">
<INPUT type="button" id="dugme" value=" Izračunaj"
onClick="sabiranje();">
<SCRIPT type="text/javascript">
function sabiranje() {
var a = document.getElementById("sabirak1").value;
var b = document.getElementById("sabirak2").value;
var c=a+b;
document.getElementById("zbir").value = c;
}
</SCRIPT>
<P>Unesite sabirke i kliknite na dugme Izračunaj.</P>
</BODY>
</HTML>
Hintovi:
JavaScript kôd funkcije sabiranje() se nalazi unutar <SCRIPT>...</SCRIPT> taga.
Poziv ove funkcije specificiran je atributom onClick na dugmetu <INPUT
type="button"> . U knjizi možete naći i mnoge druge korisne događaje (events) kojima
možete pridružiti JavaScript kôd, npr. ondblclick (dvostruki klik), onmouseover
(prelazak mišem), onchange (promjena vrijednosti, npr. za <INPUT type="text">) ...
Poljima forme pristupili smo preko Document objekta, o čemu će više riječi biti na
sljedećem predavanju i tutorijalu.
Atribut value je tipa string. Operator + primijenjen na vrijednosti numeričkih tipova vrši
sabiranje, a na vrijednosti string tipa vrši spajanje stringova (concatenate). U
JavaScriptu promjenljivima ne moramo davati specifičan tip, čak se tip može i
promijeniti za vrijeme postojanja varijable! Npr. ako napišete ovakav kôd:
var x = 1+2; // Numericki tip
x = "broj "+x;
alert(x);
Na ekranu će se ispisati tekst: "broj 3". Promjenljiva x je prvobitno bila numeričkog
tipa, ali kada smo primijenili operator + na string i broj rezultat je string (broj je najprije
konvertovan u string), pa je taj rezultat pridružen varijabli x te je i ona postala
znakovnog tipa.
Za konvertovanje stringa u int možemo koristiti funkciju parseInt.
Za izdvajanje JavaScript kôda u zasebnu datoteku koristimo ovakav HTML tag:
<SCRIPT src="sabiranje.js"></SCRIPT>
Ovaj tag treba postaviti u HTML dokument tamo gdje želite da se JS kod izvrši (ako je
sav kod u funkcijama onda je svejedno). No ostaje činjenica da se u onClick atributu
nalazi JavaScript kôd. Preporučljivo je da pridruživanje eventa dugmetu vršite na ovaj
način:
// Dugme sa IDom "dugme"
var dugme = document.getElementById("dugme");
// Funkcija koja se izvršava klikom na dugme
dugme.addEventListener( "click", function( ev ) {
alert( "Zdravo" );
}, false);
Ovaj kod treba dodati u JS fajl i to van funkcije. No addEventListener nije podržan u
IE7!
Na primjeru iznad možemo vidjeti anonimnu funkciju ili funkcijski izraz. Ova funkcija
je deklarisana unutar samog poziva dugme.addEventListener, nije joj dodijeljeno ime
(tako da se ne može pozivati osim klikom na dugme), prima jedan parametar (ev) koji
nije iskorišten, a tijelo te funkcije je jedna naredba: alert("Zdravo"). Anonimne funkcije
su vrlo često korištene u JavaScript programima. Također možemo i pridružiti funkciju
varijabli:
var nesto = function( ev ) { alert( "Zdravo" ); }
nesto();
Zadatak 1.
Pokrenite sljedeći JavaScript kôd. Da li razumijete šta se ovdje dešava i zašto?
var odgovor = prompt("Kako se zoves?", "Imenom i prezimenom(default)");
if (odgovor!=null && odgovor!="")
{
var r=confirm("Pritisnite OK da prikazete ime u alertboxu a Cancel
za prikaz direktno na stranici");
if (r==true) // ili if(r)
alert(odgovor);
else
document.write(odgovor);
}
Zadatak 2.
Korištenjem document.write i petlje napraviti JavaScript funkciju koja u trenutni HTML
dokument dodaje tablicu množenja 10x10 koja izgleda kao na slici (dat je samo gornji lijevi
ugao):
X 1 2 3 4 ...
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
Za stiliziranje tabele koristiti CSS koji se, kao i JavaScript, treba nalaziti u zasebnoj datoteci.
Korištene boje su: #CCCCCC (siva) i #FFF2CC (žućkasta). Font je sans-serif. Zaglavlja redova
i kolona su boldirana. Rubovi tabele su širine 1 pixel.
Savjet
Za ovaj zadatak nemojte koristiti dugme koje iscrtava tabelu na click!
document.write metoda se može koristiti samo za vrijeme učitavanja HTML
dokumenta jer u suprotnom zamjenjuje tekući dokument novim (čime ujedno gubimo
CSS koji je tražen zadatkom). Ispravan način izmjene aktuelnog dokumenta je putem
DOM manipulacije odnosno atributa innerHTML što je tema sljedećeg tutorijala.
Zadatak 3.
Dat je sljedeći HTML kôd:
<TEXTAREA ID="tekst" ROWS=10 COLS=30></TEXTAREA>
<BR>
<INPUT TYPE="button" ID="dugme" VALUE="Zamijeni">
Napisati JavaScript funkciju koja će klikom na dugme transformisati tekst unesen u tekstualno
polje tako da svi brojevi (ne cifre!) budu pretvoreni u tekstualnu formu. Tako npr. tekst "ovo je
broj 2586 i broj 123" treba biti zamijenjen stringom "ovo je broj
dvijehiljadepetstotinaosamdesetišest i broj stodvadesettri" (bez navodnika).
Savjet
Napravite niz stotica (čiji su elementi "stotinu", "dvijestotine"...), desetica i jedinica.
Posebni slučajevi su brojevi 11, 12, 13... 19. Za brojeve veće od 999 radite sljedeće:
prvu cifru posmatrate kao zaseban broj (npr. "pet") nakon čega ide string "hiljada" i
zatim preostale tri cifre. Slično i za veće brojeve, slična logika i za milone. Brojeve
veće od milijardu ne morate obrađivati.
Zadatak 4.
Dat je sljedeći HTML kôd:
f(x)=<INPUT TYPE="text" ID="funkcija"><BR>
<INPUT TYPE="button" ID="dugme" VALUE="Crtaj"><BR>
<CANVAS ID="slika" WIDTH="200" HEIGHT="200">Browser ne podržava
canvas</CANVAS>
Napisati JavaScript funkciju koja će klikom na dugme u predviđenom CANVAS prostoru
iscrtati grafik funkcije napisane u tekstualnom polju "funkcija". Za ovaj tutorijal možete
podržati samo polinome odnosno funkcije oblika: 2x^2-5x+6. Za vježbu kod kuće možete
dodati podršku i za korjenovanje, trigonometrijske funkcije i sl.
Kod kuće možete dodatno poboljšati program tako što će se sivom bojom iscrtati
koordinatne ose, a razmjer i lokacija koordinatnog početka se može mijenjati po želji
(zoom-in, zoom-out).