Jako jiné programovací jazyky i JavaScript má podmínkové příkazy, příkazy cyklu (a další) pro rozhodování, která část skriptu a kolikrát má být provedena. Základním klíčovým slovem při rozhodování je „if“. Ale pojďme již rovnou mezi syntaxi, sémantiku a konkrétní příklady.

Syntaxe

if (podmínka)
    seznam příkazů1
[else
    seznam příkazů2]

Všimněte si, že podmínka (tj. výraz, jehož výsledkem je hodnota typu Boolean) musí být vždy uzavřena do závorek. Pokud je podmínka vyhodnocena jako pravdivá, provede se seznam příkazů1, v opačném případě seznam příkazů2. V případě, že seznam příkazů obsahuje více než jeden příkaz, musí být tento seznam uzavřen do složených závorek.

Příklad:

if (a>b) {
    maximum = a;
    alert(‚Podmínka splněna‘);
}
else
    maximum = b;

Pokud byste v předcházejícím příkladu vypustili složené závorky, zahlásí skript chybu, neboť za příkazem maximum = a; je očekáváno klíčové slovo else. Pokud je třeba v rozhodovací podmínce porovnávat vstup s více hodnotami, je lepší použít příkaz switch:

switch (výraz) {
    case hodnota1 :
        seznam příkazů1
    case hodnota2 :
        seznam příkazů2
    …
    [default :
        seznam příkazů]
}

Pokud je výsledkem výrazů (který musí být i zde uzavřen v závorkách) hodnota, která odpovídá některé z těch, jež jsou uvedeny ve větvích case, provede se seznam příkazů nejen této větve ale i všech následujících. Pokud chcete, aby se provedly příkazy vždy jen jedné větve, je nutné příkazovou sekvenci zakončit klíčovým slovem break. Poslední větev default je nepovinná a pokud je uvedena, provede se její seznam příkazů pouze v případě, že výsledek výrazu neodpovídá žádné z hodnot větví case. Porovnávání výrazu s hodnotami se děje operátorem rovnosti (==). Proto lze za klíčovým slovem case uvést vždy jedinou hodnotu a nikoli výčet hodnot nebo jejich interval, jako to umožňují některé jiné programovací jazyky.

Příklad ukazuje, kolik alkoholu má pití, jehož popis je v proměnné drink:

switch (drink) {
     case „whisky“:
        alert(„40% alkoholu“);
        break;
    case „víno“:
        alert(„12% alkoholu“);
        break;
    case „pivo“:
        alert(„5% alkoholu“);
        break;
    default:
        alert(„neznámý obsah alkoholu“);
}

K řízení běhu skriptu se používají také příkazy cyklu. Ty opakují tělo cyklu tak dlouho, dokud je splněna určitá podmínka. Její platnost může být testována na začátku nebo na konci cyklu. Prvním cyklem s podmínkou na konci je do. Běh cyklu se opakuje po dobu, kdy má podmínkový výraz hodnotu true:

do
    seznam příkazů
while (výraz);
var vstup;
do {
    vstup = prompt(„Zadej vstup“);
    alert(„Zadali jste: “ + vstup)
}
while (vstup !== „konec“)

Jednoduchý příklad vypisuje vaše vstupní řetězce do chvíle, než zadáte jako vstupní řetězec konec. Klíčové slovo while lze použít i samostatně jako cyklus s podmínkou na začátku. Syntaxe pak bude následující (pokud je v těle cyklu více příkazů, musí být uzavřeny do složených závorek):

while (výraz)
    seznam příkazů

Cyklus for je zástupcem cyklů s podmínkou na začátku

for (inicializace; test; increment)
    seznam příkazů

Syntaxe cyklu for je volnější než v některých jiných jazycích. Žádná část (inicializace, test ani increment) není povinná. Seznam prováděných příkazů, pokud je jich více, musí být uzavřen do složených závorek Příklad naplní pole myarray s hodnotami od 0 do 9:

var myarray = new Array();
for (i = 0; i < 10; i++)
    {
        myarray[i] = i;
    }

Často je vhodné přerušit provádění cyklu a začít s jeho prováděním od následujícího průběhu tělem cyklu. Na místo, kde má být provádění přerušeno, v takovém případě umístěte klíčové slovo continue. Continue se typicky používá ve spojení s podmínkou if:

var s = „“;
i=0;
while (i < 10) {
    i++;
    // Přeskočit 5
    if (i==5) {
        continue;
    }
    s += i;
}

Pokud použijete continue ve vnořených cyklech, je nutné specifikovat, zda se má pokračovat následujícím průběhem vnitřního nebo vnějšího cyklu. K tomu slouží odkaz na návěští před příslušným cyklem, jak to demonstruje následující příklad. Příklad plní 2D pole, přičemž třetí sloupec vždy zůstává bez přiřazené hodnoty:

var a = new Array();
var i, j, s = „“, s1 = „“;
Outer:
for (i = 0; i < 5; i++) {
    Inner:
    for (j = 0; j < 5; j++) {
        if (j == 2)
            continue Inner;
        else
            a[i,j] = j + 1;
    }
}

Na závěr uveďme jeden konkrétní praktický příklad, jak využít cyklus při plnění seznamu hodnot v HTML dokumentu. Příklad trochu předbíhá výklad toho, jak se odkazovat na objekty HTML dokumentu, ale komentáře vám funkci jistě osvětlí.

<html>
<head>
    <title>ListBox</title>
</head>
<body>
    <select multiple size=“10″ name=“list1″>
</body>
</html>
<SCRIPT LANGUAGE=“JavaScript“>
for(c = 0; c < 10; c++) {
    var no = new Option(); // založení nové položky
    no.value = c; // nastavení vlastnosti value položky seznamu
    no.text = ‚alfa’+c; // nastavení vlastnosti text položky seznamu
    document.all.list1 = no; // přidání položky do seznamu na pozici udanou proměnnou c
}
</script>

Žádný příspěvek v diskuzi

Odpovědět