Rozbalovací seznamy a zaškrtávací políčka

Uživatel často nepíše, ale vybírá. Rozbalovací seznam je prvek select a v něm je pro každou možnost jeden prvek option:

<select id="napoj">
    <option value="čaj">Čaj</option>
    <option value="káva" selected>Káva</option>
    <option value="džus">Džus</option>
</select>

Text mezi tagy vidí uživatel a atribut value (hodnota) dostane váš skript: value prvku select je hodnota vybrané možnosti. Po načtení stránky je to "káva", protože atribut selected svou možnost vybere předem. Stejně jako u textového pole je hodnota vždy text.

Zaškrtávací políčko je input s type="checkbox":

<input id="cukr" type="checkbox">
<label for="cukr">S cukrem</label>

Prvek label (popisek) je text, který k políčku patří. V atributu for má id políčka, takže políčko zaškrtne i kliknutí na text. Jestli je políčko zaškrtnuté, je ve vlastnosti checked: true, nebo false. Vlastnost value tu nepoužívejte: hodnota zaškrtávacího políčka je text "on", ať je zaškrtnuté, nebo ne.

Když uživatel vybere jinou možnost nebo políčko zaškrtne či odškrtne, prvek dostane událost change (změna):

const vyberNapoje = document.querySelector("#napoj");
const polickoCukr = document.querySelector("#cukr");
const objednavka = document.querySelector("#objednavka");

function ukazObjednavku() {
    if (polickoCukr.checked) {
        objednavka.textContent = `Vaše objednávka: ${vyberNapoje.value} s cukrem`;
    } else {
        objednavka.textContent = `Vaše objednávka: ${vyberNapoje.value}`;
    }
}

vyberNapoje.addEventListener("change", ukazObjednavku);
polickoCukr.addEventListener("change", ukazObjednavku);

Oba prvky spouštějí stejnou funkci a ta čte oba, takže objednávka vždy odpovídá tomu, co je vybrané, ať se změnil kterýkoli z nich. polickoCukr.checked už je true, nebo false, a tak může být podmínkou samo o sobě.

Událost change dostávají i textová pole, ale až když uživatel skončí: když stiskne Enter nebo opustí textové pole, jehož text změnil. Na psaní reagujte pomocí input.

Pokyny

Napište funkci ukazCenu(), která v prvku cenaText ukáže cenu vybrané velikosti, například Cena: 240 Kč pro velkou pizzu. Nastavte ji jako obsluhu události change prvku vyberVelikosti.

Sýr navíc stojí 30 Kč: ve funkci ukazCenu() přičtěte k ceně 30, když je polickoSyr zaškrtnuté. Hodnota vyberVelikosti je text, takže ji nejdřív převeďte na číslo. Nastavte ukazCenu() jako obsluhu události change i prvku polickoSyr. Velká pizza se sýrem navíc pak ukáže Cena: 270 Kč.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

Zpět

5/10

Další