online: 2; azi: 914; total: 51369 Webdesign - Javascript - 05

Instructiuni conditionale


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 poate 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 11.
Se foloseste obiectul Date care determina data curenta (va fi explicat mai amanuntit in alta lectie).
<script type="text/javascript">
<!--
   // daca ora > 11,
   // va scrie în fereastra Buna ziua!
  var d = new Date()
  var time = d.getHours()
  if (time>11) {
    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 11 si in caz adevarat executa comanda dintre acolade, care afiseaza mesajul.
Daca ora este mai mica decat 11 scriptul nu va executa instructiunea dintre acolade.

2. Instructiunea "if ... else"

In exemplul anterior am vazut ca este afisat "Buna ziua!" daca ora > 11 iar in caz contrar nu se intampla nimic.
Folosind instructiunea "if ... else" putem stabili comenzi care sa fie executate cand conditia instructiunii "if" este FALSE.
Forma generala a instructiuni "if ... else" este urmatoarea :

  • if (conditie) {
        codul care va fi executat daca este adevarata conditia
    }
    else {
        codul care va fi executat daca conditia este falsa
    }
- Unde 'conditie' poate fi orice expresie logica.
Daca rezultatul conditiei este TRUE se executa codul dintre primele acoladele, care apartin de "if", in caz contrar, cand conditia returneaza FALSE, sunt executate comenzile din a doua grupa de acolade (dupa else).
Iata din nou exemplul de mai sus, de asta data folosindu-se instructiunea "if ... else".
Scriptul afiseaza "Buna ziua!" daca ora este mai mare decat 11, in caz contrar afiseaza 'Este ora ...'.
<script type="text/javascript">
<!--
   // daca ora > 11,
   // va scrie în fereastra Buna ziua!
   // Alfel afiseaza "Este ora ..."
  var d = new Date()
  var time = d.getHours()
  if (time>11) {
    document.write("<b>Buna ziua!</b>")
  }
  else {
    document.write("<b>Este ora " +time+ "</b>")
  }
//-->
</script>
- Am definit variabila 'd' a carei valoare este data curenta, apoi variabila 'time' preia ora din variabila 'd'. Conditia din instructiunea "if" verifica daca ora este mai mare decat 11 si in caz adevarat executa comanda dintre primele acolade.
Daca ora este mai mica decat 11 scriptul va executa comanda din grupul de acolade determinat de "else". (Observati folosirea operatorului de concatenare +).

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:
        cod executat daca expresie = valoare1
        break
    case valoare2:
        cod executat daca expresie = valoare2
        break
    case valoare3:
        cod executat daca expresie = valoare3
        break
    default :
        cod executat daca expresie e diferit de valoare1, valoare2 sau valoare3
    }
- Prima data este evaluata expresia scrisa intre paranteze rotunde, apoi valoarea expresiei este comparata pe rand cu fiecare valoare determinata de "case". Daca se gaseste o identitate se executa codul asociat acelui "case". Apoi se iese din instructiunea "switch".
Daca, parcurgand fiecare "case", nu se gaseste o egalitate, se executa codul de dupa "default".
Prin folosirea lui "break" se opreste parcurgerea corpului instructiunii atunci cand s-a gasit o valoare egala cu 'expresie' si se iese din "switch".
Iata un exemplu de script care afiseaza un mesaj in functie de zilele saptamanii:
<script type="text/javascript">
<!--
  var d = new Date()
  var ziua = d.getDay()
switch (ziua) {
  case 5:
      document.write("Astazi e vineri");
      break
  case 6:
      document.write("Astazi e sambata");
      break
  case 0:
      document.write("Astazi e duminica");
      break
  default:
      document.write("Mai e pana sambata");
  }
//-->
</script>
- Am definit variabila 'd' a carei valoare este data curenta, apoi variabila 'ziua' care preia numarul zilei din variabila 'd' (duminica = 0, luni = 1, ...). Se intra in corpul instructiunii "switch" si se verifica, pe rand, fiecare valoare "case" cu valoarea variabilei 'ziua', cand se gaseste egalitatea se executa comanda asociata acelui 'case' si se iese din "switch".
Daca nici una din valorile 'case' nu este egala cu valoarea variabilei 'ziua', se va executa comanda de dupa 'default', care afiseaza mesajul: "Mai e pana sambata".

Iata inca un exemplu cu "case", de data aceasta foloseste valori de tip sir (string).
<script type="text/javascript">
<!--
  var nume = "Marius";
switch (nume) {
  case "Cristi":
      document.write("Coleg");
      break
  case "Marius":
      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.