Java Script
Java Script
10. FUNCII...................................................................... 33
Definirea unei funcii.................................................................................. 33
Instruciunea return ................................................................................ 34
10
Exemple ...................................................................................................... 64
30. ANIMAIE................................................................... 98
31. IMAGINI MAPATE ...................................................... 99
32. PROGRAMAREA EVENIMENTELOR ..................... 101
Metoda setTimeout().......................................................................... 101
Metoda clearTimeout() ..................................................................... 103
BIBLIOGRAFIE ...............................................................119
13
1. Introducere n JavaScript
JavaScript este cel mai popular limbaj pentru scripturi i funcioneaz n toate
browserele importante, cum ar fi Internet Explorer, Firefox, Chrome, Opera i
Safari.
Ce este JavaScript?
14
15
2. Inserarea scripturilor JS
Dac scriptul este inclus n seciunea body, el va fi executat ct timp se ncarc
pagina. Dac scriptul este inclus n seciunea head, el va fi executat numai
cnd este apelat..
Scripturi n <head>
Scripturile care trebuie executate cnd sunt apelate sau cnd are loc un
eveniment, trebuie scrise n seciunea head. n acest fel, scriptul va fi sigur
ncrcat nainte de a fi utilizat.
<html>
<head>
<script type="text/javascript">
function message()
{
alert("Aceasta caseta de alertare este apelata si
afisata cand are loc evenimentul onload");
16
}
</script>
</head>
<body onload="message()">
<h3>Casetele de alertare</h3> <hr/>
</body>
</html>
Scripturi n <body>
Scripturile care trebuie executate cnd pagina se ncarc trebuie scrise n
seciunea body i vor genera coninutul paginii:
<html>
<head>
</head>
<body>
<h3>Afisarea textului cu JavaScript</h3> <hr/>
<script type="text/javascript">
document.write("Acest mesaj este scris cu
JavaScript");
</script>
</body>
</html>
17
3. Instruciuni JavaScript
JavaScript este o secven de declaraii, instruciuni i comenzi care vor fi
executate de ctre browser. Spre deosebire de HTML, Java Script este casesensitive, deci avei grij cnd scriei instruciuni, declarai variabile sau apelai
funcii. O instruciune JavaScript este o comand ctre browser i are rolul de a
spune browserului ce trebuie s fac. Urmtoarea instruciune JS spune
browserului s scrie n pagin textul "Buna ziua":
document.write("Buna ziua");
Fiecare instruciune se ncheie cu punct i virgul (;).
Codul JavaScript este o secven de instruciuni JS. Fiecare instruciune este
executat de browser n ordinea n care a fost scris.
Exemplul urmtor va scrie un titlu i dou paragrafe ntr-o pagin web:
<html>
<body>
<h3>Utilizarea tagurilor HTML in mesajele afisate cu
JS</h3> <hr/>
<script type="text/javascript">
document.write("<h1>Acesta este un titlu</h1>");
document.write("<p>Acesta este un paragraf.</p>");
document.write("<p>Acesta este un alt
paragraf.</p>");
</script>
</body>
</html>
18
Blocuri JavaScript
Instruciunile JavaScript pot fi grupate n blocuri care se scriu ntre acolade.
Instruciunile dintr-un bloc vor fi executate mpreun.
n acest exemplu, instruciunile care scriu un titlu i dou paragrafe, au fost
grupate mpreun ntr-un bloc:
<html>
<body>
<script type="text/javascript">
{
document.write("<h1>Acesta este un titlu</h1>");
document.write("<p>Acesta este un paragraf.</p>");
document.write("<p>Acesta este un alt
paragraf.</p>");
}
</script>
</body>
</html>
n mod normal, un bloc este folosit pentru a grupa un grup de instruciuni ntr-o
funcie sau ntr-o condiie (blocul va fi executat dac o anumit condiie este
satisfcut).
4. Comentarii JavaScript
Comentariile pot fi adugate pentru a explica codul sau a-l face mai uor de
citit. Comentariile care se scriu pe o singur linie ncep cu //. n exemplul
urmtor, comentariile tip linie sunt folosite pentru a explica codul:
<html>
<body>
<script type="text/javascript">
// Scrie un titlu:
document.write("<h1>Acesta este un titlu</h1>");
// Scrie doua paragrafe:
document.write("<p>Acesta este un paragraf.</p>");
document.write("<p>Acesta este un alt
paragraf.</p>");
</script>
</body>
</html>
19
Comentarii multi-linie
Aceste comentarii ncep cu /* i se ncheie cu */, ca n exemplul urmtor:
<html>
<body>
<script type="text/javascript">
/*
Codul urmator va scrie in pagina
un titlu si doua paragrafe
*/
document.write("<h1>Acesta este un titlu</h1>");
document.write("<p>Acesta este un paragraf.</p>");
document.write("<p>Acesta este un alt
paragraf.</p>");
</script>
</body>
</html>
20
5. Variabile JavaScript
n JS, variabilele sunt folosite pentru a pstra valori sau expresii. O variabil
poate avea un nume scurt, de exemplu x, sau mai descriptiv, de exemplu
prenume.
Reguli pentru numele variabilelor JavaScript:
numele este case-sensitive (y i Y sunt dou variabile diferite)
numele trebuie s nceap cu o liter sau cu liniua de subliniere
(underscore)
Exemplu
Valoarea unei variabile se poate modifica n timpul execuiei scriptului. Putei
referi variabila prin nume pentru a-i afia sau modifica coninutul, ca n
exemplul urmtor:
<html>
<body>
21
22
6. Operatorii JavaScript
Operatorii aritmetici
Sunt folosii pentru a efectua operaii aritmetice cu variabile i/sau valori.
Dac y=5, tabelul urmtor prezint operatorii aritmetici:
Operator
+
*
/
%
++
--
Descriere
adunare
scdere
nmulire
mprire
modulo (restul mpririi
ntregi)
incrementare
decrementare
Exemplu
x=y+2
x=y-2
x=y*2
x=y/2
x=y%2
Rezultat
x=7
x=3
x=10
x=2.5
x=1
x=++y
x=--y
x=6
x=4
Operatorii de atribuire
Sunt folosii pentru a atribui valori variabilelor JavaScript. Dac x=10 i y=5,
tabelul urmtor prezint operatorii de atribuire:
Operator
=
+=
-=
*=
/=
%=
Exemplu
x=y
x+=y
x-=y
x*=y
x/=y
x%=y
Echivalent cu
x=x+y
x=x-y
x=x*y
x=x/y
x=x%y
Rezultat
x=5
x=15
x=5
x=50
x=2
x=0
23
Exemple
x==8 este fals
24
===
!=
>
<
>=
<=
Diferit
Mai mare dect
Mai mic dect
Mai mare sau egal cu
Mai mic sau egal cu
Operatorii logici sunt utilizai pentru a determina relaia logic dintre variabile
sau valori.
Dac x=6 i y=3, tabelul urmtor prezint operatorii logici:
Operator Descriere
&&
i
||
!
Exemple
(x < 10 && y > 1) este
adevrat
(x==5 || y==5) este fals
!(x==y) este adevrat
sau
not
Operatorul condiional
Acest operator atribuie o valoare unei variabile n funcie de o anumit condiie.
Sintax:
variabila=(conditie)?valoare1:valoare2
Exemplu:
salut=(visitor=="FEM")?"Doamna ":"Domnul";
8. Instruciunile condiionale
Adesea, cnd scriei cod JS, trebuie s realizai operaii diferite n funcie de
decizii diferite. Pentru a realiza acest lucru, folosii n cod instruciunile
condiionale.
n JavaScript exist urmtoarele instruciuni condiionale:
if folosii aceast instruciune dac un cod trebuie executat cnd o
condiie este adevrat
if...else - folosii aceast instruciune pentru a executa un cod cnd o
condiie este adevrat i alt cod dac condiia este fals
if...else if....else folosii aceast instruciune pentru a selecta unul din
mai multe blocuri de cod pentru a fi executat
switch - folosii aceast instruciune pentru a selecta unul din mai
multe blocuri de cod pentru a fi executat
25
Instruciunea if
Sintax
if (conditie)
{
cod ce trebuie executat daca conditia este
adevarata
}
Exemplu:
<html>
<body>
<h3>Scriptul va afisa un mesaj daca ora<10 folosind
instructiunea if</h3> <hr/>
<script type="text/javascript">
var d = new Date();
var time = d.getHours();
if (time < 10)
{
document.write("<b>Buna dimineata</b>");
}
</script>
</body>
</html>
Instruciunea ifelse
Sintax:
if (conditie)
{
cod executat daca conditia este adevarata
}
else
{
cod executat daca conditia este falsa
}
Exemplu:
<html>
<body>
26
</html>
27
28
</html>
Instruciunea switch
Sintax:
switch(n)
{
case 1:
executa bloc 1
break;
case 2:
executa bloc 2
break;
......
default:
cod executat daca n este diferit de case 1, case
2,....
}
Exemplu:
<html>
<body>
<h3>Scriptul utilizeaza instructiunea switch</h3>
<hr/>
<script type="text/javascript">
var d = new Date();
theDay=d.getDay();
switch (theDay)
{
case 5:
document.write("<b>Vineri</b>");
break;
case 6:
document.write("<b>Sambata</b>");
break;
case 0:
document.write("<b>Duminica</b>");
break;
default:
document.write("<b>Astept weekend-ul!</b>");
}
</script>
29
</body>
</html>
9. Casete popup
JavaScript are trei tipuri de casete popup: caseta Alert, caseta Confirm i caseta
Prompt.
Caseta Alert
O caset de alert se utilizeaz atunci dorii s fii siguri c o anumit
informaie ajunge n atenia utilizatorului. Cnd o caset de alert este afiat,
utilizatorul va trebui s acioneze butonul "OK" pentru a putea continua.
Sintax:
alert("...un text....");
Exemplu:
<html>
<head>
<script type="text/javascript">
function afiseaza_alert()
{
alert("Sunt o caseta de alertare!");
}
</script>
</head>
<body>
<h3>La apasarea butonului va fi apelata o functie
care afiseaza caseta alert</h3> <hr/>
<input type="button" onclick="afiseaza_alert()"
value="Apasa" />
</body>
</html>
Caseta Confirm
O caset de confirmare se utilizeaz atunci cnd dorii ca utilizatorul s verifice
sau s accepte ceva. Cnd caseta de confirmare este afiat, utilizatorul va
trebui s acioneze butonul "OK" sau butonul "Cancel" pentru a putea
30
Caseta Prompt
Aceast caset se utilizeaz atunci cnd dorii ca utilizatorul s introduc o
anumit valoare nainte de a accesa pagina. Cnd caseta prompt este afiat,
utilizatorul va trebui s acioneze butonul "OK" sau butonul "Cancel" pentru a
putea continua dup ce introduce valoarea solicitat. Dac utilizatorul
acioneaz butonul "OK", caseta returneaz valoarea true, dac acioneaz
butonul "Cancel", caseta returneaz valoarea false.
Sintax:
31
prompt("....un text....","valoare_implicita");
Exemplu:
<html>
<head>
<script type="text/javascript">
function afiseaza_prompt()
{
var name=prompt("Va rog sa va introduceti
numele","");
if (name!=null && name!="")
{
document.write("Buna ziua " + name + "! Ce mai
faci?");
}
}
</script>
</head>
<body>
<h3>La apasarea butonului va fi apelata o functie
care afiseaza caseta prompt</h3> <hr/>
<input type="button" onclick="afiseaza_prompt()"
value="Apasa" />
</body>
</html>
Obs. Dac dorii ca textul dintr-o caset s fie afiat pe mai multe linii,
procedai ca n exemplul urmtor:
<html>
<head>
<script type="text/javascript">
function afiseaza_alert()
{
alert("Buna! Asa se adauga" + '\n' + "o intrerupere
de linie" + '\n' + "intr-o caseta de alertare!");
}
</script>
</head>
<body>
<h3>Caseta alert cu textul scris pe mai multe
linii</h3> <hr/>
32
10. Funcii
O funcie va fi executat cnd are loc un eveniment sau cnd este apelat.
Dac dorii ca browserul s nu execute un script atunci cnd pagina se ncarc,
putei scrie scriptul ntr-o funcie. O funcie poate fi apelat din orice punct al
paginii, sau chiar din alte pagini, dac funcia este scris ntr-un fiier JS extern.
Funciile JS pot fi scrise n seciunea <head> sau n seciunea <body> a
documentului. Totui, pentru a fi siguri c funcia este ncrcat n browser
nainte de a fi apelat, este recomandat s o scriei n seciunea <head>.
33
Instruciunea return
Instruciunea return este folosit pentru a specifica valoarea returnat de o
funcie i trebuie inclus n orice funcie care returneaz o valoare.
n exemplul urmtor, funcia suma returneaz suma celor doi parametri de
intrare:
<html>
<head>
<script type="text/javascript">
function suma(a,b)
{
return a+b;
}
</script>
</head>
<body>
<h3>Suma urmatoare este calculata si returnata de o
functie</h3> <hr/>
<script type="text/javascript">
document.write("7+9="+suma(7,9));
</script>
</body>
</html>
34
Exemple
Exemplul 1
Ilustreaz cum se poate transmite o variabil unei funcii i cum poate fi
folosit respectiva variabil n corpul funciei.
<html>
<head>
<script type="text/javascript">
function functia_1(text)
{
alert(text);
}
</script>
</head>
<body>
<h3>Functii JavaScript</h3> <hr/>
<form>
<input type="button" onclick="functia_1('Bune ati
venit!')" value="Apasati">
</form>
<p>Cand apasati butonul, va fi apelata o functie cu
textul "Bine ati venit!" drept parametru. Functia va
afisa parametrul cu o caseta de alertare.</p>
</body>
</html>
Exemplul 2
Ilustreaz cum poate fi folosit rezultatul returnat de o funcie.
<html>
<head>
<script type="text/javascript">
function functie_2()
{
return ("Bine ati venit!");
}
</script>
35
</head>
<body>
<h3>Textul urmator este returnat de o functie apelata
direct din document.write()</h3> <hr/>
<script type="text/javascript">
document.write(functie_2())
</script>
</body>
</html>
Exemplul 3
<html>
<head>
<script type="text/javascript">
function salut(txt)
{
alert(txt);
}
</script>
</head>
<body>
<h3>Utilizarea functiilor JavaScript</h3> <hr/>
<form>
<input type="button"
onclick="salut('Buna dimineata!')"
value="Dimineata">
<input type="button"
onclick="salut('Buna seara!')"
value="Seara">
</form>
<p>
Cand apasati unul dintre butoane, va fi apelata o
functie care afiseaza mesajul primit ca
parametru.</p>
</body>
</html>
36
37
38
</body>
</html>
Instruciunea do...while
Este o variant a instruciunii while. Secvena de instruciuni va fi executat n
mod sigur o dat, apoi n mod repetat, ct timp condiia specificat este
adevrat.
Sintax:
do
{
codul ce trebuie executat
}
while (var<=val_finala);
Exemplu:
Vor fi afiate numerele impare 50.
<html>
<body>
<h3>Utilizarea instructiunii do-while</h3> <hr/>
<script type="text/javascript">
document.write("Numerele impare mai mici sau egale cu
50:"+"<br/>");
var i=1;
do
{
document.write(i + " ");
i+=2;
}
while (i<=50);
</script>
</body>
</html>
39
<body>
<h3>Utilizarea instructiunii break</h3> <br/>
<script type="text/javascript">
document.write("Numerele naturale mai mici egale cu
5:"+"<br/>");
var i=0;
for (i=0;i<=10;i++)
{
if (i==3)
{
document.write("Ciclu oprit cu break"); break;
}
document.write(i);
document.write("<br />");
}
</script>
</body>
</html>
Instruciunea continue
Instruciunea ntrerupe execuia iteraiei curente i sare la urmtoarea iteraie. n
exemplul urmtor, valoarea 3 nu va fi afiat (este srit cu instruciunea
continue).
<html>
<body>
<h3>Utilizarea instructiunii continue</h3> <hr/>
<script type="text/javascript">
document.write("Numerele naturale mai mici sau egale
cu 10:"+"<br/>");
var i=0
for (i=0;i<=10;i++)
{
if (i==3)
{
document.write("valoare sarita cu
continue"+"<br/>");continue;
}
document.write(i);
document.write("<br />");
}
</script>
</body>
</html>
40
41
42
Evenimentul onSubmit
Acest eveniment este utilizat pentru a valida toate cmpurile unui formular
nainte de trimiterea lui ctre server.
Exemplul urmtor ilustreaz utilizarea evenimentului onSubmit. Funcia
verificaFormular() va fi apelat atunci cnd utilizatorul acioneaz butonul
submit din formular. Dac valorile introduse n cmpuri nu sunt valide,
trimiterea formularului va fi anulat. Funcia verificaFormular() returneaz
true sau false. Dac funcia va returna valoarea false, trimiterea formularului
va fi anulat:
<form method="post" action="xxx.htm" onsubmit="return
verificaFormular()">
43
{
gestionarea erorilor
}
Exemple
n exemplul urmtor ar trebui afiat o caset de alertare cu mesajul "Bine ati
venit!" cnd butonul este acionat.. Totui, n corpul funciei mesaj() exist o
eroare, cuvntul rezervat alert este scris greit. Aceast eroare va fi detectat
de JS. Blocul catch sesizeaz eroarea i execut un cod special pentru a o
rezolva. Acest cod afieaz un mesaj de eroare pentru a informa utilizatorul ce
se ntmpl. Dac utilizatorul apas butonul OK, ncrcarea paginii va continua
fr probleme:
<html>
<head>
<script type="text/javascript">
var txt="";
function mesaj()
{
try
{
adddlert("Bine ati venit!");
}
catch(err)
{
text="In aceasta pagina este o eroare.\n\n";
text+="Descrierea erorii: " + err.description +
"\n\n";
text+="Pentru a continua apasati OK.\n\n";
alert(text);
}
}
</script>
</head>
<body>
<h3>Utilizarea instructiunii try..catch pentru
sesizarea erorilor</h3> <hr/>
<input type="button" value="Vedeti mesajul"
onclick="mesaj()" />
</body>
</html>
44
45
46
}
if(er=="Err2")
{
alert("Eroare! Valoarea este prea mic");
}
if(er=="Err3")
{
alert("Eroare! Valoarea nu este un numar");
}
}
</script>
</body>
</html>
Exemplu:
Exemplul urmtor ilustreaz utilizarea evenimentului onerror.
<html>
<head>
<script type="text/javascript">
onerror=handleErr;
var txt="";
function handleErr(msg,url,l)
{
txt="In aceasta pagina este o eroare.\n\n";
txt+="Eroare: " + msg + "\n";
txt+="URL: " + url + "\n";
txt+="Linie: " + l + "\n\n";
txt+="Pentru a continua apasati OK.\n\n";
alert(txt);
return true;
}
function message()
{
adddlert("Bine ai venit!");
}
</script>
</head>
<body>
<h3>Exemplu de utilizare a evenimentului onerror</h3>
<hr/>
47
48
Proprieti
Proprietile sunt valori asociate cu un obiect.
n exemplul urmtor, utilizm proprietatea length a obiectului String (ir
de caractere) pentru a determina numrul de caractere memorate ntr-un ir:
<script type="text/javascript">
var txt="Bine ati venit!";
document.write(txt.length);
</script>
Codul de mai sus va afia valoarea: 15
Metode
Metodele sunt aciuni ce pot fi realizate cu un obiect.
n exemplul urmtor, utilizm metoda UpperCase() a obiectului String pentru a
afia un text cu litere mari:
<script type="text/javascript">
var txt="Bine ati venit!";
document.write(txt.toUpperCase());
</script>
Codul de mai sus va afia irul: BINE ATI VENIT!
49
Descriere
charCodeAt()
concat()
substr()
substring()
50
Metod
anchor()
Descriere
big()
blink()
bold()
Creeaz o ancor
fixed()
small()
strike()
sub()
sup()
Exemple
Exemplul 1
Ilustreaz utilizarea proprietii length pentru a determina lungimea unui ir.
<html>
<body>
<h3>Obiectul String. Determinarea lungimii unui
sir</h3> <hr/>
<script type="text/javascript">
var txt="Bine ati venit!";
document.write("Sirul este: "+txt+"<br/>");
document.write("Are lungimea "+txt.length);
</script>
<p><b>Obs.</b>Sirul nu se modifica.</p>
</body>
</html>
Exemplul 2
Ilustreaz cum se utilizeaz tagurile HTML pentru a stiliza un ir.
<html>
<body>
51
52
53
Exemplul 4
Ilustreaz cum se utilizeaz metoda indexOf() pentru a determina poziia
primei apariii a unei valori ntr-un ir.
<html>
<body>
<h3>Obiectul String. Cautarea primei aparitii a unei
valori in sir cu indexof().</h3> <hr/>
<script type="text/javascript">
var str="Buna ziua!";
document.write("Sirul
in
care
se
cauta
este:
"+str+"<br/>");
document.write("Sirul \"Buna\" apare in sir in
pozitia "+str.indexOf("Buna") + "<br />");
document.write("Sirul \"ZIUA\" apare in sir in
pozitia "+str.indexOf("ZIUA") + "<br />");
document.write("Sirul \"ziua\" apare in sir in
pozitia "+str.indexOf("ziua"));
</script>
<p><b>Obs.</b>Sirul
nu
se
modifica
in
urma
cautarii!</p>
</body>
</html>
Valorile afiate sunt: 0 -1 5.
Obs. Dac valoarea nu apare n ir, valoarea returnat este -1. irurile sunt
indexate de la 0.
Exemplul 5
Ilustreaz cum se utilizeaz metoda match() pentru a cuta un subir ntr-un
ir. Metoda returneaz subirul, dac este gsit, sau valoarea null, dac subirul
nu este gsit n ir.
<html>
<body>
<h3>Obiectul String. Cauta unui subsir intr-un sir cu
match().</h3> <hr/>
<script type="text/javascript">
var str="Hello world!";
document.write("Sirul in care se cauta este:
"+str+"<br/>");
document.write("Sirul cautat: "+"world"+". ");
document.write("Valoarea returnata:
"+str.match("world") + "<br />");
54
55
56
Exemplul 8
Ilustreaz utilizarea metodei split() pentru a mpri un ir n subiruri pe
baza unui caracter separator. Dac caracterul separator este omis, se va returna
ntreg irul. Dac caracterul este irul vid, irul va fi mprit caracter cu
caracter. Opional, se poate preciza i numrul maxim de mpriri.
<html>
<body>
<h3>Obiectul String. Impartirea unui sir in subsiruri
cu split().</h3> <hr/>
<script type="text/javascript">
var str="Bine ati venit";
document.write("Sirul initial:
"+str+"<br/>");
57
Setarea datei
Putem manevra uor datele calendaristice folosind metodele obiectului Date.
n exemplul urmtor, data este setat la 19 februarie 2010:
var myDate=new Date();
myDate.setFullYear(2010,1,19);
n exemplul urmtor, data este setat la apte zile n viitor:
var myDate=new Date();
myDate.setDate(myDate.getDate()+7);
Descriere
Returneaz ziua din lun (ntre 1 i 31)
58
getDay()
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth()
getSeconds()
getTime()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
toDateString()
toString()
toTimeString()
valueOf()
Exemple
Exemplul 1
59
"+Date());
</script>
</body>
</html>
Exemplul 2
Ilustreaz utilizarea metodei getTime() pentru a calcula anii scuri din 1970
pn n prezent.
<html>
<body>
<h3>Obiectul Date. Utilizarea metodei getTime().</h3>
<hr/>
<script type="text/javascript">
var d=new Date();
document.write("Au trecut "+d.getTime() + "
milisecunde din 01.01.1970 si pana acum.");
</script>
</body>
</html>
Exemplul 3
Ilustreaz utilizarea metodei setFullYear() pentru a seta o dat specific.
<html>
<body>
<h3>Obiectul Date. Setarea datei cu
setFullYear().</h3> <hr/>
<script type="text/javascript">
var d = new Date();
d.setFullYear(2010,1,19);
60
61
62
63
pets[0]="Iguana";
Descriere
join()
pop()
push()
reverse()
shift()
slice()
sort()
splice()
Exemple
Exemplul 1
Ilustreaz crearea unui tablou, atribuirea de valori i afiarea elementelor
tabloului.
<html>
64
<body>
<h3>Obiectul Array. Crearea unui tablou,
initializarea si afisarea elementelor.</h3> <hr/>
<script type="text/javascript">
var pets = new Array();
pets[0] = "Pisica";
pets[1] = "Caine";
pets[2] = "Perus";
document.write("Elementele memorate in tablou
sunt:"+"<br/>");
for (i=0;i<pets.length;i++)
{
document.write(pets[i] + "<br />");
}
</script>
</body>
</html>
Exemplul 2
Ilustreaz utilizarea instruciunii for...in pentru a parcurge elementele unui
tablou.
<html>
<body>
<h3>Obiectul Array. Afisarea elementelor unui tablou
cu instructiunea for..in.</h3> <hr/>
<script type="text/javascript">
var x;
var pets = new Array();
pets[0] = "Pisica";
pets[1] = "Caine";
pets[2] = "Perus";
document.write("Elementele memorate in tablou
sunt:"+"<br/>");
for (x in pets)
{
document.write(pets[x] + "<br />");
}
</script>
</body>
65
</html>
Exemplul 3
Ilustreaz utilizarea metodei concat() pentru a concatena trei tablouri.
<html>
<body>
<h3>Obiectul Array. Concatenarea a trei tablouri cu
concat().</h3> <hr/>
<script type="text/javascript">
var parinti = ["Maria", "George"];
var copii = ["Elena", "Mihai"];
var frati = ["Paul", "Dan"];
var familie = parinti.concat(copii,frati);
document.write("Parinti: "+parinti+"<br/>");
document.write("Copii: "+copii+"<br/>");
document.write("Frati: "+frati+"<br/>");
document.write("Familia: "+familie);
</script>
<p><b>Obs.</b>Tablourile concatenate nu se modifica.
Rezultatul concatenarii este un nou tablou.</p>
</body>
</html>
Exemplul 4
Ilustreaz utilizarea metodei join() pentru a concatena toate elementele unui
tablou ntr-un ir de caractere.
<html>
<body>
<h3>obiectul Array. Concatenarea elementelor unui
tablou intr-un sir de caractere cu join().</h3> <hr/>
<script type="text/javascript">
var fructe = ["Mere", "Pere", "Banane", "Kiwi"];
document.write("Tabloul contine valorile:
"+fructe+"<br/>");
document.write("Sirul concatenat cu join(\" \"):
"+fructe.join(" ") + "<br />");
document.write("Sirul concatenat cu join(\"+\"):
"+fructe.join("+") + "<br />");
66
"+pets.pop()
"+pets +
"+pets.pop()
"+pets);
</script>
<p><b>Obs.</b> Tabloul se modifica! Valoarea
eliminata poate fi memorata intr-o variabila.</p>
</body>
</html>
67
Exemplul 6
Ilustreaz utilizarea metodei push() pentru a aduga noi elemente la sfritul
unui tablou. Pot fi adugate mai multe valori simultan. Valorile trebuie separate
prin virgul.
<html>
<body>
<h3>Obiectul Array. Adaugarea de noi elemente la
sfarsitul tabloului cu push().</h3> <hr/>
<script type="text/javascript">
var pets = ["Pisica", "Caine", "Perus", "Hamster"];
document.write("Tabloul initial:
"+pets+"<br/>");
68
"+friends+"<br/>");
var x=friends.shift();
document.write("Elementul eliminat: "+x+"<br/>");
document.write("Tabloul dupa eliminare: "+friends);
</script>
<p><b>Obs.</b> Tabloul se modifica. Metoda returneaza
elementul eliminat si rezultatul
poate fi memorat intr-o variabila.</p>
</body>
</html>
Exemplul 9
Ilustreaz cum se selecteaz elementele unui tablou cu metoda slice().
Metoda are dou argumente: primul precizeaz poziia de nceput a secvenei
selectat, iar al doilea poziia de sfrit. Dac al doilea argument lipsete, se vor
selecta toate elementele pn la sfritul tabloului. Dac argumentul este
negativ, se vor selecta elementele de la sfritul irului ctre nceput.
<html>
69
<body>
<h3>Obiectul Array. Selectare elementelor din tablou
cu slice().</h3> <hr/>
<script type="text/javascript">
var pets = ["Caine", "Pisica", "Papagal", "Hamster"];
document.write("Tabloul initial:
"+pets+"<br/>");
var x=pets.slice(0,1);
document.write("Elementele selectate cu slice(0,1):
"+x+"<br/>");
70
71
de valori care vor fi terse (dac are valoarea 0, nu se vor terge ci se vor insera
valori) i, al treilea, opional, care reprezint noile valori adugate n tablou.
<html>
<body>
<h3>Obiectul Array. Inserarea/stergerea elementelor
dintr-o pozitie a tabloului cu splice().</h3> <hr/>
<script type="text/javascript">
var friends = ["Ana", "Mircea", "Dan", "Maria"];
document.write("Tabloul initial: "+friends+"<br/>");
document.write("Se adauga valoarea \"Andra\" in
pozitia 3 din tablou cu splice(3,0)"+"<br/>");
friends.splice(3,0,"Andra");
document.write("Tabloul obtinut: "+friends+"<br/>");
document.write("Se sterg din tablou primele doua
valori cu splice(0,2)"+"<br/>");
document.write("Valorile sterse:
"+friends.splice(0,2)+"<br/>");
document.write("Tabloul obtinut: "+friends);
</script>
<p><b>Obs.</b> Tabloul se modifica. Daca metoda
elimina elemente din tablou, va returna elementele
eliminate.</p>
</body>
</html>
Exemplul 13
Ilustreaz utilizarea metodei toString() pentru a converti un tablou ntr-un
ir de caractere. Metoda returneaz irul de caractere, valorile fiind separate
prin virgul.
<html>
<body>
<h3>Obiectul Array. Convertirea unui tablou in sir de
caractere cu toString().</h3> <hr/>
<script type="text/javascript">
var n = new Array(14,0,7,-4,25,13,7);
document.write("Tabloul contine valorile:"+"<br/>");
for(x in n) document.write(n[x]+"<br/>");
72
73
74
<html>
<body>
<script type="text/javascript">
var b1=new Boolean( 0);
var b2=new Boolean(1);
var b3=new Boolean("");
var b4=new Boolean(null);
var b5=new Boolean(NaN);
var b6=new Boolean("false");
document.write("0 are valoarea "+ b1 +"<br />");
document.write("1 are valoarea "+ b2 +"<br />");
document.write("Un sir vid are valoarea "+ b3 + "<br
/>");
document.write("null are valoarea "+ b4+ "<br />");
document.write("NaN are valoarea "+ b5 +"<br />");
document.write("Sirul 'false' are valoarea "+ b6
+"<br />");
</script>
</body>
</html>
Constante matematice
n JavaScript se pot utiliza opt constante matematice accesibile prin obiectul
Math. Ele pot fi utilizate cu urmtoarea sintax:
Math.E
Math.PI
Math.SQRT2
75
Math.SQRT1_2
Math.LN2
Math.LN10
Math.LOG2E
Math.LOG10E
Metode matematice
Exemplul urmtor ilustreaz utilizarea metodei round() pentru a rotunji un
numr la cel mai apropiat ntreg:
document.write(Math.round(4.7));
Exemplul urmtor utilizeaz metoda random() pentru a genera un numr
aleator cuprins ntre 0 i 1:
document.write(Math.random());
Exemplul urmtor utilizeaz metodele floor() i random() pentru a
genera un numr aleator cuprins ntre 0 i 10:
document.write(Math.floor(Math.random()*11));
Descriere
LN2
LN10
LOG2E
LOG10E
PI
SQRT1_2
SQRT2
Descriere
acos(x)
Arccosinus de x, n radiani
asin(x)
Arcsinus de x, n radiani
atan(x)
76
PI/2 radiani
ceil(x)
cos(x)
Cosinus de x (x n radiani)
exp(x)
Valoarea lui Ex
floor(x)
log(x)
round(x)
sin(x)
sqrt(x)
tan(x)
Exemple
Exemplul 1
Ilustreaz utilizarea metodei max() pentru a determina maximul a dou sau
mai multe valori.
<html>
<body>
<script type="text/javascript">
document.write(Math.max(5,10) + "<br />");
document.write(Math.max(0,150,30,20,38) + "<br />");
document.write(Math.max(-5,10) + "<br />");
document.write(Math.max(-5,-10) + "<br />");
document.write(Math.max(1.5,2.5));
</script>
</body>
</html>
Exemplul 2
Ilustreaz utilizarea metodei min() pentru a determina minimul a dou sau
mai multe valori.
77
<html>
<body>
<script type="text/javascript">
document.write(Math.min(5,10) + "<br />");
document.write(Math.min(0,150,30,20,38) + "<br />");
document.write(Math.min(-5,10) + "<br />");
document.write(Math.min(-5,-10) + "<br />");
document.write(Math.min(1.5,2.5));
</script>
</body>
</html>
Exemplul 3
Convertirea gradelor din Celsius n Fahrenheit i reciproc.
<html>
<head>
<script type="text/javascript">
function convert(degree)
{
if (degree=="C")
{
F=document.getElementById("c").value * 9 / 5 + 32;
document.getElementById("f").value=Math.round(F);
}
else
{
C=(document.getElementById("f").value -32) * 5 / 9;
document.getElementById("c").value=Math.round(C);
}
}
</script>
</head>
<body>
<p></p><b>Introduceti un numar in unul din cele doua
campuri:</b></p>
<form>
<input id="c" name="c" onkeyup="convert('C')"> grade
Celsius<br />
egal<br />
78
Definire
Un obiect RegExp poate fi definit cu una din urmtoarele forme:
var txt=new RegExp(pattern,modifiers);
sau, mai simplu:
var txt=/pattern/modifiers;
pattern specific modelul cutat
modifiers specific dac ctarea este global, case-senzitiv etc.
Urmtoarea linie de cod definete un obiect RegExp numit m1 cu modelul
"d":
var m1=new RegExp("d");
Cnd folosii obiectul m1 ca s cutai ntr-un ir, va fi gsit litera "d".
.
Modificatorii
Modificator
i
Descriere
Parantezele ptrate
79
[0-9]
[a-z]
[A-Z]
[a-Z]
Metacaracterele
Sunt caracterele care au o semnificaie special:
Metacaracter Descriere
.
Gsete un singur caracter (orice caracter diferit de linie nou
i sfrit de linie).
\w
Caut un caracter de cuvnt (litere mici sau mari, cifre i
underscore)
\W
Gsete un caracter care nu este de cuvnt
\d
Gsete o cifr
\D
\s
\S
\b
\B
\0
\n
\f
\r
\t
\v
Cuantificatori
80
Cuantificator
n+
Descriere
n*
n?
n{X}
n{X,Y}
n{X,}
n$
^n
?=n
?!n
Descriere
ignoreCase
lastIndex
multiline
source
81
82
do
{
result=m1.exec("Cele mai frumoase carti le pastrez n
amintire");
document.write(result);
}
while (result!=null)
</script>
</body>
</html>
Deoarece modelul "e" apare de ase ori n text, programul de mai sus va afia
secvena: eeeeeenull
Metoda compile()
Este utilizat pentru a modifica coninutul obiectului RegExp.
Metoda poate schimba modelul cutat i poate aduga sau elimina al doilea
parametru.
Exemplu:
<html>
<body>
<script type="text/javascript">
var m1=new RegExp("e");
document.write(m1.test("Cele mai frumoase carti le
pastrez n amintire"));
m1.compile("d");
document.write(m1.test("Cele mai frumoase carti le
pastrez n amintire"));
</script>
</body>
</html>
Deoarece modelul "e" apare n ir, dar modelul "d" nu apare, programul
anterior va afia valorile: truefalse
Exemple
Exemplul 1
83
84
</script>
</body>
</html>
Programul va gsi toate secvenele de trei caractere n care primul i ultimul
caracter este a. Rezultatul afiat pentru irul de mai sus este: ana,ata
Exemplul 4
Ilustreaz cum se poate construi un model care s gseasc toate caracterele
care nu fac parte dintr-un cuvnt.
<html>
<body>
<script type="text/javascript">
var str="Ai obtinut 75%!";
var m1=/\W/g;
document.write(str.match(m1));
</script>
</body>
</html>
Programul anterior va afia rezultatul: , ,%,!
Exemplul 5
Ilustreaz cum se poate construi un model cu care s nceap sau s se
sfreasc un cuvnt.
<html>
<body>
<script type="text/javascript">
var str="Vizitati Google";
var m1=/\bGo/g;
document.write(str.match(m1));
</script>
</body>
</html>
Dac nu este gsit nici-un cuvnt care ncepe sau se sfrete cu modelul dat,
metoda match() va returna valoarea null. Pentru exemplul considerat
anterior, exist n text un cuvnt care se potrivete i metoda returneaz
modelul. Rezultatul afiat este: Go
85
Exemplul 6
Ilustreaz cum se pot gsi toate secvenele dintr-un text, n care un anumit
caracter apare cel puin o dat.
<html>
<body>
<script type="text/javascript">
var str="Tu creezi pagini web interesante!";
var m1=/e+/g;
do
{
result=m1.exec(str);
document.write(result); document.write(" ");
}
while(result!=null)
</script>
</body>
</html>
Programul anterior va determina toate secvenele din text n care caracterul e
apare cel puin o dat (n poziii consecutive). Rezultatul afiat de program este:
ee e e e e null
Exemplul 7
Ilustreaz cum se pot gsi o secvenele de text n care un anumit caracter apare
de minim x ori.
<html>
<body>
<script type="text/javascript">
var str="Aveti 10, 100, 1000 sau 10000 de lei?";
var m1=/\d{3,}/g;
document.write(str.match(m1));
</script>
</body>
</html>
Programul anterior afieaz rezultatul: 100,1000,10000, adic secvenele care
conin cel puin trei cifre zecimale.
Exemplul 8
Ilustreaz cum se pot gsi gsi toate subirurile dintr-un text, care sunt urmate
de un subir dat.
86
<html>
<body>
<script type="text/javascript">
var str="eu am o pisica, dar eu am si un papagal";
var m1=/eu(?= am)/g;
document.write(str.match(m1));
</script>
</body>
</html>
Programul anterior determin toate irurile eu care sunt urmate de irul
am. Rezultatul afiat este: eu,eu
Descriere
MAX_VALUE
MIN_VALUE
toPrecision(x)
87
toString()
valueOf()
Exemple
Exemplul 1
Ilustreaz cum se afieaz cel mai mare numr din JavaScript.
<html>
<body>
<script type="text/javascript">
document.write(Number.MAX_VALUE);
</script>
</body>
</html>
Exemplul 2
Ilustreaz cum se stabilete numrul de zecimale afiate.
<html>
<body>
<script type="text/javascript">
var num = new Number(27.2547);
document.write(num.toFixed()+"<br />");
document.write(num.toFixed(1)+"<br />");
document.write(num.toFixed(3)+"<br />");
document.write(num.toFixed(10));
</script>
</body>
</html>
Exemplul 3
Ilustreaz cum se stabilete precizia numrului afiat (numrul total de cifre
afiate).
<html>
88
<body>
<script type="text/javascript">
var num = new Number(31.1593);
document.write(num.toPrecision()+"<br />");
document.write(num.toPrecision(2)+"<br />");
document.write(num.toPrecision(3)+"<br />");
document.write(num.toPrecision(10));
</script>
</body>
</html>
Exemplul 4
Ilustreaz cum se convertete n ir un numr, folosind diferite baze de
numeraie.
<html>
<body>
<script type="text/javascript">
var num=new Number(31);
document.write(num.toString()+"<br />");
//numarul este reprezentat in baza 10 (implicit)
document.write(num.toString(2)+"<br />");
//numarul este reprezentat in baza 2
document.write(num.toString(8)+"<br />");
//numarul este reprezentat in baza 8
document.write(num.toString(16)+"<br />");
//numarul este reprezentat in baza 16
</script>
</body>
</html>
89
Aproape orice exemplu din acest curs funcioneaz n browserele care recunosc
JavaScript. Totui, unele exemple nu funcioneaz n anumite browsere, n
special n cele vechi. De aceea, uneori este foarte util s determinai browserul
utilizat de vizitator pentru a-i putea furniza informaiile potrivite. Cea mai bun
metod este s v proiectai paginile web s se comporte diferit, n funcie de
browserul vizitatorului. Obiectul Navigator poate fi utilizat n acest scop,
deoarece conine informaii despre numele i versiunea browserului
vizitatorului.
Descriere
appName
appVersion
Exemple
Exemplul 1
Variabila "browser" din exemplul urmtor memoreaz numele browserului.
Proprietatea appVersion returneaz un ir de caractere care conine mult mai
multe informaii, nu numai numrul versiunii. Deoarece ne intereseaz numai
versiunea, pentru a o extrage din ir, este utilizat o funcie numit
parseFloat(), care extrage din ir i returneaz prima secven care arat
ca un numr zecimal.
<html>
<body>
<script type="text/javascript">
var browser=navigator.appName;
var b_ver=navigator.appVersion;
var versiune=parseFloat(b_ver);
document.write("Numele browserului: "+ browser);
document.write("<br />");
document.write("Versiunea browserului: "+ versiune);
</script>
</body>
</html>
90
Exemplul 2
Ilustreaz cum pot fi afiate diferite mesaje, n funcie de tipul i versiunea
browserului.
<html>
<head>
<script type="text/javascript">
function detectBrowser()
{
var browser=navigator.appName;
var b_ver=navigator.appVersion;
var versiune=parseFloat(b_ver);
if ((browser=="Netscape"||browser=="Microsoft
Internet Explorer")
&& (versiune>=4))
{
alert("Browserul dvs. este destul de bun!");
}
else
{
alert("Este timpul sa va upgradati browserul!");
}
}
</script>
</head>
<body onload="detectBrowser()">
</body>
</html>
Exemplul 3
Ilustreaz cum pot fi afiate mai multe detalii despre browserul vizitatorului.
<html>
<body>
<script type="text/javascript">
document.write("<p>Browser: ");
document.write(navigator.appName + "</p>");
document.write("<p>Versiune: ");
document.write(navigator.appVersion + "</p>");
document.write("<p>Cod: ");
document.write(navigator.appCodeName + "</p>");
91
document.write("<p>Platforma: ");
document.write(navigator.platform + "</p>");
document.write("<p>Cookies activate: ");
document.write(navigator.cookieEnabled + "</p>");
</script>
</body>
</html>
28. Cookies
Un cookie este o variabil pstrat n calculatorul vizitatorului. De fiecare dat
cnd calculatorul respectiv cere browserului o pagin, el va trimite i cookie-ul
respectiv. Cu JavaScript, putei crea i extrage cookies.
Exemple de cookies:
Numele utilizatorului Prima dat cnd utilizatorul v viziteaz
pagina trebuie s-i completeze numele. Numele este stocat ntr-un
cookie. Urmtoarea dat cnd vizitatorul ajunge la pagina dvs., putei
s-l ntmpinai cu un mesaj de genul "Bine ai venit........!" Numele
este recuperat dintr-un cookie.
Parol Prima dat utilizatorul v viziteaz pagina trebuie s
completeze o parol. Parola este memorat ntr-un cookie. Data
viitoare cnd vizitatorul ajunge n pagin, parola poate fi recuperat
dintr-un cookie.
Data calendaristic Prima dat cnd utilizatorul v viziteaz pagina,
data curent este memorat ntr-un cookie. Data viitoare cnd
utilizatorul v viziteaz pagina, putei s afiai un mesaj de genul
"Ultima dvs. vizita a fost in data de .........." Aceast dat este
recuperat dintr-un cookie.
92
((expiredays==null) ? "" :
";expires="+exdate.toGMTString());
}
Parametrii funciei reprezint numele i valoarea cookie-ului i numrul de zile
pn cnd acesta expir. Funcia convertete numrul de zile ntr-o dat valid
i apoi adaug numrul de zile dup care va expira cookie-ul va expira. Apoi,
numele i valoarea cookie-ului i data expirrii sunt memorate ntr-un obiect
document.cookie.
n continuare, vom crea o funcie care verific dac cookie-ul a fost setat:
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
{
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring
(c_start,c_end));
}
}
return "";
}
Funcia verific mai nti dac n obiectul document.cookie este memorat vreun cookie. n caz afirmativ, verificm dac este memorat cookie-ul dorit. Dac
cookie-ul este gsit, i returnm valoarea, n caz contrar returnm un ir vid.
n cele din urm, vom crea funcia care afieaz un mesaj de bun venit dac
cookie-ul este setat i o caset prompt care cere numele vizitatorului, n caz
contrar:
function checkCookie()
{
username=getCookie('username');
if (username!=null && username!="")
{
alert('Welcome again '+username+'!');
}
else
{
username=prompt('Please enter your name:',"");
if (username!=null && username!="")
93
{
setCookie('username',username,365);
}
}
}
Programul complet este:
<html>
<head>
<script type="text/javascript">
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
{
c_start=c_start + c_name.length+1 ;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length
return
unescape(document.cookie.substring(c_start,c_end));
}
}
return ""
}
function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+
+escape(value)+((expiredays==null)
?
""
expires="+exdate.toGMTString());
}
function checkCookie()
{
username=getCookie('username');
if (username!=null && username!="")
{
alert('Bine ai revenit '+username+'!');
}
else
{
94
"="
";
Cmpuri obligatorii
Funcia urmtoare verific dac un cmp obligatoriu a rmas necompletat. n
caz afirmativ, o caset de alertare afieaz un mesaj i funcia returneaz
valoarea false. Dac cmpul a fost completat, funcia returneaz valoarea true
i data este considerat valid:
function valideaza_obligatoriu(camp,txt)
{
with (camp)
{
if (value==null||value=="")
{
alert(txt);return false;
}
else
{
95
return true;
}
}
}
Scriptul complet, cu formularul HTML, ar putea arta n felul urmtor:
<html>
<head>
<script type="text/javascript">
function valideaza_obligatoriu(camp,txt)
{
with (camp)
{
if (value==null||value=="")
{
alert(txt);return false;
}
else
{
return true;
}
}
}
function valideaza_formular(formular)
{
with (formular)
{
if (valideaza_obligatoriu(email,"Campul Email este
obligatoriu!")==false)
{email.focus();return false;}
}
}
</script>
</head>
<body>
<form action="submit.htm" onsubmit="return
valideaza_formular(this)" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Trimite">
</form>
</body>
96
</html>
97
}
}
</script>
</head>
<body>
<form action="submit.htm" onsubmit="return
valideaza_formular(this);" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Trimite">
</form>
</body>
</html>
30. Animaie
Putei folosi JavaScript pentru a crea imagini animate. Secretul este s lsai
scriptul s afieze imagini diferite pentru evenimente diferite.
n exemplul urmtor vom aduga o imagine care se va comporta ca un link n
pagina web. Vom aduga apoi un eveniment onMouseOver i un eveniment
onMouseOut care vor apela dou funcii JavaScript ce vor comuta ntre dou
imagini.
Codul HTML arat astfel:
<a href="http://www.google.com" target="_blank">
<img border="0" alt="Vizitati Google!" src="img2.gif"
id="m1"
onmouseOver="mouseOver()" onmouseOut="mouseOut()"
/></a>
Observai c imaginea a primit un id, pentru ca JavaScript s poat referi
imaginea n diferite puncte din script. Evenimentul onMouseOver va spune
browserului c, n momentul n care mouse-ul trece peste imagine, trebuie
apelat o funcie care s schimbe imaginea. Evenimentul onMouseOut va
spune browserului c, atunci cnd mouse-ul se ndeprteaz de imagine, trebuie
apelat o funcie care va afia din nou imaginea iniial.
Codul celor dou funcii este:
<script type="text/javascript">
function mouseOver()
{
document.getElementById("m1").src ="img1.gif";
98
}
function mouseOut()
{
document.getElementById("m1").src ="img2.gif";
}
</script>
Funcia mouseOver() va determina afiarea imaginii "img1.gif", iar funcia
mouseOut() va determina afiarea imaginii "img2.gif". Efectul de animaie
este mai vizibil dac cele dou imagini sunt foarte asemntoare, diferind spre
exemplu prin culoare.
Codul ntregului program este:
<html>
<head>
<script type="text/javascript">
function mouseOver()
{
document.getElementById("m1").src ="img1.gif";
}
function mouseOut()
{
document.getElementById("m1").src ="img2.gif";
}
</script>
</head>
<body>
<a href="http://www.google.com" target="_blank">
<img border="0" alt="Vizitati Google!" src="img2.gif"
id="b1"
onmouseover="mouseOver()" onmouseout="mouseOut()"
/></a>
</body>
</html>
99
100
Metoda setTimeout()
Sintax:
var t=setTimeout("declaraie javascript",
milliseconds);
Metoda setTimeout() returneaz o valoare care este memorat n variabila
t declarat mai sus. Dac dorii s anulai programarea, o putei face folosind
variabila asociat. Primul argument al metodei este un ir de caractere care
conine o declaraie JavaScript care poate fi, de exemplu, un apel de funcie sau
instruciunea de afiare a unei casete de mesaj. Al doilea parametru precizeaz
numrul de milisecunde (ncepnd de acum) dup care va fi executat primul
parametru.
Obs: O secund are 1000 de milisecunde.
Exemplul 1
n exemplul urmtor, cnd butonul este apsat, o caset de alertare va fi afiat
dup 7 secunde.
<html>
<head>
<script type="text/javascript">
function mesaj()
{
var t=setTimeout("alert('Caseta afisata dupa 7
secunde!')",7000);
}
</script>
</head>
<body>
<form>
101
102
</form>
</body>
</html>
Metoda clearTimeout()
Sintax:
clearTimeout(variabila_setTimeout)
n exemplul urmtor utilizm numrtorul infinit din exemplul urmtor i
adugm o funcie care va opri numrtorul la apsarea unui buton:
<html>
<head>
<script type="text/javascript">
var c=0;
var t;
var pornit=0;
function numara()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("numara()",1000);
}
function verifica()
{
if (!pornit)
{
pornit=1;
numara();
}
}
function stop()
{
clearTimeout(t);
pornit=0;
}
</script>
</head>
<body>
<form>
<input type="button" value="Incepe numararea!"
103
onClick="verifica()">
<input type="text" id="txt">
<input type="button" value="Opreste numararea!"
onClick="stop()">
</form>
</body>
</html>
Exemplu
Acest exemplu ilustreaz crearea unui ceas cu ajutorul evenimentelor
programate.
<html>
<head>
<script type="text/javascript">
function numara()
{
var azi=new Date();
var h=azi.getHours();
var m=azi.getMinutes();
var s=azi.getSeconds();
// adauga un zero in fata numerelor <10
m=verifica(m);
s=verifica(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+
s;
t=setTimeout('numara()',500);
}
function verifica(i)
{
if (i<10)
{
i="0" + i;
}
return i;
}
</script>
</head>
<body onload="numara()">
<div id="txt"></div>
</body>
</html>
104
105
persoana.varsta=25;
persoana.ochi="verzi";
Adugare unei metode se face simplu, ca n exemplul urmtor:
persoana.scrie=scrie;
2 Crearea ablonului unui obiect
ablonul definete structura unui obiect:
function persoana(nume,prenume,varsta,ochi)
{
this.nume=nume;
this.prenume=prenume;
this.varsta=varsta;
this.ochi=ochi;
}
Observai c ablonul este doar o funcie. n interiorul funciei trebuie s facei
atribuiri pentru this.nume_proprietate. Construcia "this" se refer la instana
curent a obiectului.
Dup ce ai construit ablonul obiectului, putei crea noi instane dup modelul
urmtor:
tata=new persoana("Marcu","Ion",40,"verzi");
mama=new persoana("Marcu","Maria",38,"negri");
Adugarea de metode obiectului persoana se realizeaz tot n interiorul
ablonului:
function persoana(nume,prenume,varsta,ochi)
{
this.nume=nume;
this.prenume=prenume;
this.varsta=varsta;
this.ochi=ochi;
this.numenou=numenou;
}
Observai c metodele sunt funcii ataate obiectului. Acum va trebui scris
funcia numenou():
function numenou(str)
{
this.nume=str;
}
Putei folosi metoda astfel: mama.numenou(Georgescu);
106
Descriere
NaN
O valoare "Not-a-Number"
undefined
Exemplul 1
Ilustreaz utilizarea proprietii NaN:
<html>
<body>
<script type="text/javascript">
var luna=13;
if (luna < 1 || luna > 12)
{
luna = luna.NaN;
}
document.write(luna);
</script>
</body>
</html>
Exemplul 2
Ilustreaz utilizarea proprietii undefined:
<html>
<body>
<script type="text/javascript">
107
var t1="";
var t2;
if (t1==undefined)
{
document.write("Variabila t1 nu este definita");
}
if (t2==undefined)
{
document.write("Variabila t2 nu este definita");
}
</script>
</body>
</html>
Funcie
escape()
Descriere
eval()
isFinite()
isNaN()
Number()
parseFloat()
parseInt()
String()
unescape()
Decodeaz un ir codat
Exemplul 1
Ilustreaz utilizarea metodei eval():
<html>
<body>
<script type="text/javascript">
108
eval("x=10;y=20;document.write(x*y)");
document.write("<br />" + eval("2+2"));
document.write("<br />" + eval(x+17));
</script>
</body>
</html>
Exemplul 2
Ilustreaz utilizarea metodei Number():
<html>
<body>
<script
var t1=
var t2=
var t3=
var t4=
var t5=
type="text/javascript">
new Boolean(true);
new Boolean(false);
new Date();
new String("921");
new String("193 469");
document.write(Number(t1)+
document.write(Number(t2)+
document.write(Number(t3)+
document.write(Number(t4)+
document.write(Number(t5)+
</script>
"<br
"<br
"<br
"<br
"<br
/>");
/>");
/>");
/>");
/>");
</body>
</html>
Exemplul 3
Ilustreaz utilizarea metodei parseFloat() pentru a extrage valoarea dintrun ir ca numr zecimal:
<html>
<body>
<script type="text/javascript">
document.write(parseFloat("10") + "<br />");
document.write(parseFloat("10.00") + "<br />");
document.write(parseFloat("10.33") + "<br />");
document.write(parseFloat("34 45 66") + "<br />");
document.write(parseFloat("
60
") + "<br />");
109
110
Obs. Dac numrul ncepe cu 0 va fi interpretat ca fiind scris n baza 8, iar dac
ncepe cu 0x ca fiind scris n baza 16. Baza poate fi specificat i prin
adugarea celui de-al doilea parametru n metod. Conversia se ncheie la
ntlnirea primului caracter din ir care nu poate apare n scrierea unui numr
ntreg. Programul anterior afieaz valorile:
10
10
34
60
40
NaN
10
8
8
16
16
history
innerHeight
innerWidth
111
length
location
name
opener
outerHeight
outerWidth
pageXOffset
pageYOffset
parent
screenLeft
screenTop
screenX
screenY
self
status
top
confirm()
112
createPopup()
focus()
moveBy()
moveTo()
open()
print()
prompt()
resizeBy()
resizeTo()
scrollBy()
scrollTo()
setInterval()
setTimeout()
Exemplul 1
Ilustreaz utilizarea metodelor open() i focus().
<html>
<head>
<script type="text/javascript">
function deschide()
{
myWindow=window.open('','','width=200,height=100');
myWindow.document.write("<p>Aceasta este o fereastra
creata cu metoda open()</p>");
myWindow.focus();
}
</script>
</head>
<body>
<input type="button" value="Deschide fereastra"
onclick="deschide()" />
113
</body>
</html>
Exemplul 2
n acest exemplu, funcia clock() este apelat la fiecare 1000 milisecunde i
actualizeaz ceasul afiat. Ceasul poate fi oprit prin apsarea unui buton.
<html>
<body>
<input type="text" id="clock" />
<script language=javascript>
var int=self.setInterval("clock()",1000);
function clock()
{
var d=new Date();
var t=d.toLocaleTimeString();
document.getElementById("clock").value=t;
}
</script>
</form>
<button
onclick="int=window.clearInterval(int)">Stop</button>
</body>
</html>
Exemplul 3
Ilustreaz mutarea ferestrei curente cu 250 pixeli relativ la poziia ei curent.
<html>
<head>
<script type="text/javascript">
function deschide()
{
myWindow=window.open('','','width=200,height=100');
myWindow.document.write("<p>Aceasta este o fereastra
deschisa cu open()</p>");
}
function muta()
{
myWindow.moveBy(250,250);
114
myWindow.focus();
}
</script>
</head>
<body>
<input type="button" value="Deschide fereastra"
onclick="deschide()" />
<br /><br />
<input type="button" value="Muta fereastra"
onclick="muta()" />
</body>
</html>
Exemplul 4
Ilustreaz redimensioneaz redimensionarea ferestrei curente.
<html>
<head>
<script type="text/javascript">
function redimensioneaza()
{
top.resizeTo(500,300);
}
</script>
</head>
<body>
<form>
<input type="button" onclick="redimensioneaza()"
value="Redimensioneaza fereastra" />
</form>
</body>
</html>
Exemplul 5
Ilustreaz utilizarea metodei blur() pentru a trimite o fereastr n
background.
<html>
<head>
<script type="text/javascript">
function deschide()
115
{
myWindow=window.open('','','width=200,height=100');
myWindow.document.write("<p>Aceasta fereastra este
deschisa cu open()</p>");
myWindow.blur();
}
</script>
</head>
<body>
<input type="button" value="Deschide fereastra"
onclick="deschide()" />
</body>
</html>
Obiectul screen
Acest obiect conine informaii despre ecranul vizitatorului.
Proprietile obiectului screen
Proprietate
Descriere
availHeight Returneaz nlimea ecranului (fr Taskbar)
availWidth Returneaz limea ecranului (fr Taskbar)
colorDepth Returneaz numrul de bii din paleta de culori folosit pentru
afiarea imaginilor
height
Returneaz nlimea total a ecranului
pixelDepth Returneaz rezoluia culorii ecranului (n bii/pixel)
width
Returneaz limea total a ecranului
Exemplu urmtor ilustreaz utilizarea tuturor proprietilor obiectului screen
pentru a obine informaii despre ecranul vizitatorului:
<html>
<body>
<h3>Ecranul dumneavoastra are proprietatile:</h3>
<script type="text/javascript">
document.write("Latime/Inaltime totala: ");
document.write(screen.width + "*" + screen.height);
document.write("<br />");
116
Obiectul history
Acest obiect conine URL-urile vizitate de utilizator (ntr-o fereastr de
browser). Obiectul history face parte din obiectul window i este accesat
prin proprietatea window.history.
Proprietile obiectului history
Proprietate
Descriere
length
Returneaz numrul de URL-uri din lista history
Metodele obiectului history
Metod
Descriere
back()
ncarc URL-ul anterior din lista history
forward()
go()
Obiectul location
Obiectul location conine informaii despre url-ul curent..
Obiectul location este parte a obiectului window i este accesat prin intermediul
proprietii window.location.
Proprietile obiectului location
Proprietate
Descriere
hash
Returneaz poriunea de ancor din URL
host
117
hostname
href
pathname
port
protocol
search
replace()
Exemplu
Ilustreaz utilizarea metodei assign().
<html>
<head>
<script type="text/javascript">
function nou()
{
window.location.assign("http://www.google.com")
}
</script>
</head>
<body>
<input type="button" value="Incarca noul document"
onclick="nou()" />
</body>
</html>
118
Bibliografie
Jim Keogh, JavaScript fara mistere - ghid pentru autodidacti, Editura Rosetti
Educational, 2005
Tom Negrino, Dori Smith, JavaScript pentru World Wide Web, Editura Corint,
2004
Richard Wagner, JavaScript, Editura Teora
Diana Elena Diaconu, Pagini web cu JavaScript, Editura Edusoft, 2006
http://www.w3schools.com/
http://www.howtocreate.co.uk/tutorials/javascript/
119