Načrtovanje in razvoj spletnih aplikacij

Odločitve v JavaScriptu

V mnogo programih JavaSCript se moramo odločiti med več možnostmi, oziroma izvršiti določene stavke samo, če je izpolnjen nek pogoj. Take odločitvene probleme rešujemo z:

Pogojni izraz

Pogojni izraz je edini izraz v JavaSCript, ki ima tri operande. Je krašji zapis pogojnega stavka if. Prvi je pogoj, druga dva pa sta poljubna izraza. Vrednost pogojnega izraza je odvisna od pogoja. Če je izpolnjen in je njegova vrednost true, dobi izraz vrednost drugega, sicer pa vrednost tretjega operanda.

imeSpremenljivke = (pogoj) ? izraz1 : izraz2;

Če ima pogoj vrednost true, dobi pogojni izraz vrednost izraza izraz1, sicer pa vrednost izraza izraz2. Pogoj običajno napišemo v navadnih oklepajih. Izraza izraz1 in izraz2 sta lahko različnega tipa.

Oglejmo si primer, kjer imata spremenljivki x in y poljubno vrednost. V spremenljivko min zapišemo manjšo, v spremenljivko max pa večjo od njunih vrednosti. V spremenljivko abs izračunamo še absolutno vrednost spremenljivke y.

var x = 10;
var y = -5;

var min = (x < y) ? x : y;    // -5
var max = (x > y) ? x : y;    // 10
var abs = (y < 0) ? -y : y;   // 5

Oglejmo si še drugi primer, v katerem želimo datume izpisati z vodilnimi ničlami (npr. 07.02.2015):

<p id="primer"></p>
<script>
   var dan = 7, mesec = 2, leto = 2015;
   var izpis = ("Datum: " + ((dan < 10) ? 0 : "") + dan + "." + 
               ((mesec < 10) ? 0 : "") + mesec + "." + leto);
   document.getElementBayId("primer").innerHTML = izpis;
</script>

Pogojni stavki

Pogojni stavek uporabimo, kadar želimo izvesti določen stavek samo v primeru, ko je izpolnjen nek pogoj.

if

Pogojni stavek zapišemo z besedo if, ki ji sledi pogoj zapisan v oklepajih (izraz z vrednostjo true ali false), temu pa stavek, ki ga želimo izvesti, če je pogoj izpolnjen (če ima vrednost true):

if (pogoj) stavek1;

Če je pogoj izpolnjen, lahko izvedemo tudi več stavkov. V tem primeru stavke postavimo med zavite oklepaje:

if (pogoj) {
  stavek1
  stavek2
  ...
}

<p id="primer"></p>
<script>
   var starost = 20;  
   if( starost > 18 ){     
      document.getElementById("primer").innerHTML = "Si polnoleten, lahko opravljaš vozniški izpit.";  
   }
</script>

else

V primeru, ko pogoj ni izpolnjen (ko ima vrednost false) lahko izvedemo tudi drug stavek tako, da na koncu (običajno v novi vrsti) napišemo besedo else ter stavek, ki ga želimo izvesti.

if (pogoj) stavek1
else stavek2;

Seveda pa lahko, tudi če pogoj ni izpolnjen, izvedemo več stavkov tako, da jih vstavimo v zavite oklepaje:

if (pogoj) {
  stavek1
  stavek2
  ...
}
else {
  stavek1
  stavek2
  ...
}

<p id="primer"></p>
<script>
   var starost = 15;  
   if( starost > 18 ){     
      document.getElementById("primer").innerHTML = "Si polnoleten, lahko opravljaš vozniški izpit.";
   }
   else {
      document.getElementById("primer").innerHTML = "Premlad si, vozniškega izpita še ne moreš opravljati.";     
   }
</script>

else if

S pogojnim stavkom tok programa preusmerimo na eno od dveh možnih poti. Kadar pa imamo na izbiro več možnosti, moramo uporabiti več pogojnih stavkov:

if (pogoj) stavek1
else if (pogoj) stavek2
else if (pogoj) stavek3
  ...
else stavekN;

Oglejmo si primer, kjer bomo število preverili, če je večje od 10, zatem pa še ali je sodo ali liho:

<p id="primer"></p>
<script>
   var stevilo = 15;  
   if( stevilo > 10 ){     
      if (stevilo % 2 == 0)
         document.getElementById("primer").innerHTML = "Sodo število večje od 10.";
      else 
         document.getElementById("primer").innerHTML = "Liho število večje od 10.";
   }
   else {
      if (stevilo % 2 == 0)
         document.getElementById("primer").innerHTML = "Sodo število manjše od 10.";
      else 
         document.getElementById("primer").innerHTML = "Liho število manjše od 10.";   
   }
</script>

switch

Namesto kombinacije zaporednih pogojnih stavkov if uporabimo lahko stavek switch. To lahko storimo takrat, ko se je potrebno odločiti med več možnostmi samo na podlagi različnih vrednosti nekega izraza. Stavek switch zapišemo takole:

switch (izraz) {
   case vrednost1: stavek1
   break;
   case vrednost2: stavek2
   break;
   ...
   case vrednostN: stavekN
   break;
   default: stavek;
}

Program izračuna vrednost izraza izraz ter poišče stavek case s to vrednostjo. Vrednosti, ki sledijo besedi case, morajo biti konstante. Če program najde ustrezen stavek case, izvrši vse stavke, ki sledijo, razen če prej ne naleti na stavek break, ki povzroči skok iz stavka switch. Če stavka case z ustrezno vrednostjo ni, izvrši vse stavke, ki sledijo besedi default.

Zadnji del stavka switch (tistega, ki se prične z možnostjo default) lahko tudi izpustimo. Če program ne bo našel ustrezne možnosti case, ne bo storil ničesar. Če na koncu katere od možnosti case izpustimo stavek break, se bo program nadaljeval s stavki, ki pripadajo naslednji možnosti.

Oglejmo si primer, kjer bomo v spremenljivko vnesli število od 1 do 7, program pa bo izpisal ime dneva:

<p id="primer"></p>
<script>
   var dan = 5;
   switch (dan) {
      case 1: 
         dan = "ponedeljek";
         break;
      case 2: 
         dan = "torek";
         break;
      case 3: 
         dan = "sreda";
         break;
      case 4: 
         dan = "četrtek";
         break;
      case 5: 
         dan = "petek";
         break;
      case 6: 
         dan = "sobota";
         break;
      case 7: 
         dan = "nedelja";
         break;
      default: 
         dan = "Napačen vnos!";
   }
   document.getElementById("primer").innerHTML = dan; 
</script>