JavaScript Curs2
JavaScript Curs2
JavaScript Curs2
Instruciuni condiionale.......................................................................................................................2
Instructiunea "if"..............................................................................................................................2
Instructiunea "if ... else".......................................................................................................................3
Instructiunea switch.........................................................................................................................3
Instruciuni ciclice (repetitive).............................................................................................................6
Instruciuni ciclice (repetitive).............................................................................................................6
Instructiunea for...............................................................................................................................6
Instructiunea for ... in.......................................................................................................................7
Instructiunea while...........................................................................................................................7
Instructiunea do ... while..................................................................................................................8
Instruciuni complementare..................................................................................................................9
Instruciuni complementare..................................................................................................................9
Instructiunile break si continue........................................................................................................9
Instructiunea eticheta (label)..........................................................................................................10
3 Instructiunea with........................................................................................................................11
Ferestre Alert, Prompt si Confirm......................................................................................................12
Ferestre Alert, Prompt si Confirm......................................................................................................12
Evidentiere Imagini la Clic.................................................................................................................14
Evidentiere Imagini la Clic.................................................................................................................14
Instruciuni condiionale
Partea cea mai interesanta, dar si dificila, in scrierea unui script este proectarea acestuia astfel incat
sa ia decizii in timp ce este executat.
Cu ajutorul instructiunilor conditionale putem face programele sa testeze diferite conditii dupa care
sa decida modul de executie a datelor.
In Java Script sunt urmatoarele instructiuni conditionale:
if - executa comenzile dorite cand o conditie este adevarata.
if ... else - executa anumite comenzi cand o conditie este adevarata si alte comenzi cand
aceasta este falsa.
switch - selecteaza care comanda va fi executata.
1. Instructiunea "if"
Se spune ca instructiunea "if" este una din cele mai des folosite.
Forma generala a acestei instructiuni este urmatoarea :
if (conditie) {
codul care va fi executat daca este adevarata conditia
}
- Unde 'conditie' poate fi orice expresie logica.
Daca rezultatul conditiei este TRUE se executa codul dintre acolade, in caz contrar, cand conditia
returneaza FALSE, se trece peste acest cod.
Iata un exemplu practic. Urmatorul script afiseaza "Buna ziua" daca ora este mai mare decat 12.
Se foloseste obiectul Date care determina data curenta (va fi explicat mai amanuntit in alta lectie).
<script type="text/javascript">
<!-// daca ora > 12,
// va scrie n fereastra Buna ziua!
var d = new Date()
var time = d.getHours()
if (time>12) {
document.write("<b>Buna ziua!</b>")
}
//-->
</script>
- Am definit variabila 'd' a carei valoare este data curenta, apoi variabila 'time' preia numai ora din
variabila 'd'. Conditia din instructiunea "if" verifica daca ora este mai mare decat 12 si in caz
adevarat executa comanda dintre acolade, care afiseaza mesajul.
Daca ora este mai mica decat 12 scriptul nu va executa instructiunea dintre acolade.
3. Instructiunea switch
Aceasta instructiune e folosita pentru a compara o valoare cu altele dintr-o lista.
Sintaxa generala a instructiuni "switch" este urmatoarea.
switch (expresie) {
case valoare1:
3
<script type="text/javascript">
<!-var nume = "Gheorghe";
switch (nume) {
case "Ion":
document.write("Coleg");
break
case "Gheorghe":
document.write("Frate");
break
case "Maria":
document.write("Sora");
break
default:
document.write("Altcineva");
}
//-->
</script>
Va returna Frate.
Dar in general "case" e recomandat sa fie folosit cu valori numerice.
1. Instructiunea for
Aceasta are urmatoarea forma generala:
for (incepere_nr; conditie_nr; ciclu) {
cod care va fi executat
}
- Unde "incepe_nr" e folosit la 'initializare' pentru a da o valoarea initiala numarului de repetari, de
multe ori prin aceasta se declara o variabila care poate fi folosita ca un contor al ciclului.
"conditie_nr" verifica daca numarul de cicluri se incadreaza intr-o anumita valoare si daca
rezultatul este TRUE se executa inca o data codul dintre acolade.
"ciclu incrementeaza sau decrementeaza valoarea la care a ajuns contoarul ciclului, apoi aceasta
valoare este verificata din nou de "conditie_nr" pana cand rezultatul este FALSE.
Aceste trei expresii dintre parantezele rotunde sunt optionale, dar daca este omisa una din ele,
caracterul punct si virgula ";" trebuie sa ramana pentru ca fiecare expresie sa ramana la locul ei.
In interiorul instructiunii for (ca si la instructiunea "if"), intre acolade, pot fi introduse si alte
instructiuni "for", sau alte instructiuni conditionale, acest lucru se numeste imbricarea
instructiunilor.
Iata un exemplu simplu de utilizare a instructiunii "for":
<script type="text/javascript">
<!-for (x=1; x<6; x++) {
document.write("<br /> x este "+x);
}
//-->
</script>
Se atribue lui 'x' valoarea 1, se verifica conditia (x<6) care este TRUE si se executa corpul
instructiunii (dintre acolade, afisand "x este 1) apoi se incrementeaza valoarea lui 'x' cu o unitate
(x++), acum 'x are valoarea 2. Se verifica iar conditia (x<6) si fiindca este adevarata, se executa iar
corpul instructiunii apoi se incrementeaza valoarea lui 'x' si tot asa pana cand 'x' va avea valoarea 6
care la verificarea conditiei returneaza FALSE, moment cand se termina executia instructiunii "for".
Acest script va afisa urmatorul rezultat:
6
x este 1
x este 2
x este 3
x este 4
x este 5
3. Instructiunea while
Aceasta instructiune repeta un cod atata timp cat conditia este adevarata.
Comanda actioneaza similar cu instructiunea "for", dar nu include functiile de initializare si
incrementare a variabilelor.
Instructiunea "while" are urmatoarea forma generala:
while (conditie) {
codul care va fi executat
}
Iata exemplu anterior, de la instructiunea "for", aici este scris in varianta instructiunii "while":
<script type="text/javascript">
<!-var x = 1;
while (x<6) {
document.write("<br /> x este "+x);
x++;
}
//-->
</script>
- Prima data am declarat variabila 'x' dandu-i valoarea 1.
Instructiunea "while" verifica conditia (aici x<6) care este adevarata si permite executarea corpului
7
functiei dintre acolade care afiseaza "x este 1" si incrementeaza valoarea lui 'x' cu o unitate. Acum
'x' are valoarea 2, se verifica conditia, care este adevarata si se executa iar codul dintre acolade, ...,
si tot asa pana cand la verificarea conditiei rezultatul este FALSE, moment in care se termina
rularea instructiunii "while".
Acest script va afisa urmatorul rezultat:
x este 1
x este 2
x este 3
x este 4
x este 5
Instruciuni complementare
Pe langa instructiunile "for" si "while" avem si alte instructiuni 'complementare' care pot fi
executate impreuna cu acestea.
break - intrerupe definitiv executia unui ciclu.
continue - sare peste instructiunile care au mai ramas din ciclul respectiv.
label (eticheta) - permite iesirea dintr-un ciclu cu instructiuni ciclice imbricate, la o locatie
specificata a scriptului.
with - se foloseste pentru a fi evitata specificarea repetata la referirea unui obiect, cand ii
accesam metodele sau proprietatile.
if (x==3 || x==5) {
continue;
}
document.write("<br /> X este "+x);
}
</script>
Acest script va afisa urmatorul rezultat:
X este 1
X este 2
X este 4
X este 6
X este 7
- Observati ca atunci cand 'x' are valoarea 3 sau 5, prin instructiunea "continue" se intrerupe
executia codului care urmeaza dupa aceasta (aici "document.write("<br /> X este "+x);") din
repetarea curenta, dar se continua cu verificare conditiei instructiunii "for" si executia ciclului.
Observam ca desi "break" este inclus in interiorul celei dea doua instructiune "for", prin specificarea
lui "loopX", care este eticheta intregului ansamblu de instructiuni imbricate, se va intrerupe
executia intregului ansamblu, nu numai instructiunii "for" unde este adaugat "break". Daca
eliminam eticheta "loopX" se va vedea diferenta.
10
3 Instructiunea with
Aceasta comanda se foloseste pentru a evita referirea in mod repetat la un obiect, atunci cand ii
accesam metodele sau proprietatile de mai multe ori. Orice metoda sau proprietate dintr-un bloc
"with" pe care JavaScript nu o recunoaste va fi asociata cu obiectul specificat pentru acel bloc.
Sintaxa acestei instructiuni este :
with (obiect) {
instructiuni
}
- Unde "obiect" specifica referirea la obiect care trebuie folosita, daca aceasta nu exista in blocul
"instructiuni". Ajuta mult cand se utilizeaza de mai multe ori functii matematice avansate, prin
intermediul obiectului "Math". (Acest obiect va fi explicat n capitolul Obiecte JavaScript2).
In exemplul urmator este prezentat modul de folosire a instructiunii "with" :
<script type="text/javascript">
<!-with(document) {
write("Salut");
write("Acum nu mai este necesara folosirea obiectului ca prefix al functiei");
}
//-->
</script>
Acest script va afisa :
Salut
Acum nu mai este necesara folosirea obiectului ca prefix al functiei
In mod normal, pt. a afisa un text folosim sintaxa "document.write("text ...")", dar aici, prin
folosirea lui 'with' impreuna cu obiectul "document", nu mai este necesara adaugarea acestuia la
metoda "write", astfel se scurteaza codul scriptului.
11
1. Fereastra Alert
Probabil ati intalnit pana acum, de mai multe ori exemple cu "Alert". Fiind un element simplu si
deja cunoscut, voi face o scurta prezentare a sintaxei acestuia. Crearea ferestrelor alert se face cu
sintaxa:
window.alert("mesaj")
- Unde "mesaj" este textul care va apare in fereastra Alert.
Urmatorul exemplu deschide o fereastra cu mesajul "Bine ai venit".
<script type="text/javascript">
<!-window.alert("Bine ai venit");
//-->
</script>
In browser va apare o fereastra ca in imaginea urmatoare
2. Fereastra Prompt
Fereastra Prompt se creaza cu sintaxa:
window.prompt("mesaj", "default")
- Unde "mesaj" este un text care va apare in fereastra, deasupra unei casute de text input; iar
"default" este textul care va apare in casuta input.
Urmatorul exemplu deschide o fereastra "Prompt".
<script type="text/javascript">
<!-window.prompt("Scrieti numele", "Nume");
//-->
</script>
In browser va apare o fereastra ca in imaginea de mai jos
12
Textul pe care utilizatorul il adauga in campul din fereastra prompt poate fi preluat intr-o variabila
si folosit apoi in script. Un exemplu in care atribuim deschiderea ferestrei Prompt unei variabile
(aici "nume"), care va prelua sirul adaugat in caseta de text, apoi valoarea acestei variabile o
introducem in mesajul unei ferestre Alert:
<script type="text/javascript">
<!-var nume = window.prompt("Scrieti numele", "Nume");
alert("Salut "+nume+"\n Bine ai venit.");
//-->
</script>
- Dupa ce utilizatorul scrie numele in fereastra Prompt si apasa OK se va deschide o fereastra Alert
care contine in mesaj numele adaugat de utilizator.
- Am folosit "\n" pentru a adauga o linie noua, dupa "nume", in textul care apare in fereastra Alert.
3. Fereastra Confirm
Fereastra de confirmare se creaza cu sintaxa:
window.confirm("intrebare")
In fereastra de confirmare va apare textul "intrebare" si doua butoane "OK" si "Cancel".
Aceasta fereastra este folosita pentru a fi executata o comanda cand este apasat butonul "OK"
(returneaza TRUE) si alta comanda cand este apasat butonul "Cancel" (returneaza FALSE)
Urmatorul exemplu deschide o fereastra "Confirm" in care apare intrebarea "Rezultatul lui 0+0 este
0?". Daca este apasat butonul "OK" apare o fereastra Alert cu mesajul "Corect", iar daca este apasat
butonul "Cancel" apare o fereastra Alert cu mesajul "Incorect"
<script type="text/javascript">
<!-intrebare = window.confirm("Rezultatul lui 0+0 este 0?");
if (intrebare) alert("Corect");
else alert("Incorect");
//-->
</script>
13
<script type="text/javascript">
// setare proprietati de evidentiere
var imgProp = {
'padding': '3px',
'backgroundColor': '#eded01',
'borderSize': '1ps',
'borderStyle': 'dashed',
'borderColor': '#0001fe'
};
// functie pt. evidentiere imagini la clic
function highlightImg() {
// obtine toate tag-urile <img> si numarul lor
var allimgs = document.getElementsByTagName('img');
var nrallimgs = allimgs.length;
// parcurge elementele <img> si inregistreaza onclick la fiecare
for(i=0; i<nrallimgs; i++) {
allimgs[i].onclick=function() {
// daca borderStyle e deja aplicat, anuleaza 'padding', 'background' si 'border'
// altfel, aplica proprietatile setate in $imgProp
if(this.style.borderStyle == imgProp.borderStyle) {
this.style.padding = 'auto';
this.style.background = 'none';
this.style.border = 'none';
}
else {
this.style.padding = imgProp.padding;
this.style.backgroundColor = imgProp.backgroundColor;
this.style.borderSize = imgProp.borderSize;
this.style.borderStyle = imgProp.borderStyle;
this.style.borderColor = imgProp.borderColor;
}
}
}
}
// apeleaza functia highlightImg() pentru a aplica efectul
highlightImg();
</script>
In obiectul imgProp puteti defini stilul de evidentiere, proprietatile CSS: "padding", "background",
si "border". Efectul e pentru toate tag-urile <img> din pagina; daca vreti sa fie aplicat doar la
imaginile dintr-un anumit element HTML, inlocuiti codul:
var allimgs = document.getElementsByTagName('img');
Cu aceasta linie de cod ('idelm' este id-ul elementului in care sunt adaugate imaginile).
var allimgs = document.getElementById('idelm').getElementsByTagName('img');
Scriptul JavaScript trebuie adaugat la sfarsitul documentului HTML, inainte de tag-ul de inchidere
</body>.
14