← IT

JavaScript – základy

Doplněný obsah — není z archivu podkladů, napsáno podle ŠVP. Vhodné ověřit u vyučujícího.

Co je JavaScript

Začlenění JavaScriptu do HTML stránky

Proměnné

Podmínky

Cykly

Funkce

Práce s DOM

Formuláře a validace v JavaScriptu

Praktické příklady

Validace formuláře před odesláním

Podrobnější příklad – formulář se dvěma poli, u kterých se před odesláním zkontroluje vyplnění i formát e-mailu. Pokud validace neprojde, odeslání se zastaví (event.preventDefault()) a uživateli se zobrazí chybová hláška přímo ve stránce (bez nutnosti odeslat formulář na server a čekat na odpověď).

<form id="registrace">
  <input type="text" id="jmeno" placeholder="Jméno">
  <input type="text" id="email" placeholder="E-mail">
  <button type="submit">Registrovat</button>
</form>
<p id="chyba" style="color: red;"></p>

<script>
  document.getElementById("registrace").addEventListener("submit", function (event) {
    let jmeno = document.getElementById("jmeno").value;
    let email = document.getElementById("email").value;
    let chybaEl = document.getElementById("chyba");

    // jednoduchá kontrola formátu e-mailu pomocí regulárního výrazu
    let emailJeValidni = /^\S+@\S+\.\S+$/.test(email);

    if (jmeno.trim() === "") {
      chybaEl.textContent = "Vyplňte prosím jméno.";
      event.preventDefault(); // zastaví odeslání formuláře na server
    } else if (!emailJeValidni) {
      chybaEl.textContent = "Zadejte platný e-mail.";
      event.preventDefault();
    } else {
      chybaEl.textContent = ""; // vše v pořádku, formulář se odešle
    }
  });
</script>

Manipulace s DOM po kliknutí na tlačítko

Po kliknutí na tlačítko se změní text i vzhled (barva pozadí) vybraného elementu.

<p id="stav">Světlo je vypnuté.</p>
<button id="prepinac">Přepnout světlo</button>

<script>
  let zapnuto = false;

  document.getElementById("prepinac").addEventListener("click", function () {
    let stavEl = document.getElementById("stav");
    zapnuto = !zapnuto; // negace aktuálního stavu

    if (zapnuto) {
      stavEl.textContent = "Světlo je zapnuté.";
      stavEl.style.backgroundColor = "yellow";
    } else {
      stavEl.textContent = "Světlo je vypnuté.";
      stavEl.style.backgroundColor = "transparent";
    }
  });
</script>

Práce s polem – filtrování položek

Pole objektů lze pomocí metody filter() snadno prohledávat nebo filtrovat podle zadané podmínky, aniž by bylo nutné psát vlastní cyklus.

// pole objektů - seznam produktů
const produkty = [
  { nazev: "Klávesnice", cena: 450 },
  { nazev: "Myš", cena: 250 },
  { nazev: "Monitor", cena: 3200 },
  { nazev: "Sluchátka", cena: 890 },
];

// vyfiltrujeme jen produkty levnější než 1000 Kč
const levneProdukty = produkty.filter(function (produkt) {
  return produkt.cena < 1000;
});

console.log(levneProdukty);
// [{nazev: "Klávesnice", cena: 450}, {nazev: "Myš", cena: 250}, {nazev: "Sluchátka", cena: 890}]

// stejný zápis pomocí šipkové funkce
const levneProdukty2 = produkty.filter((produkt) => produkt.cena < 1000);

Fetch API – spolupráce JavaScriptu a PHP

Fetch API umožňuje z JavaScriptu na klientovi poslat požadavek na server (např. na PHP skript) a se získanými daty dále pracovat, aniž by se musela znovu načítat celá stránka. JavaScript tak běží v prohlížeči uživatele, zatímco PHP skript, na který se dotazuje, běží na serveru.

<?php
// data.php - serverový skript, který vrátí data ve formátu JSON
header("Content-Type: application/json");

$udaje = [
    "jmeno" => "Jana",
    "pocetBodu" => 87,
];

echo json_encode($udaje);
?>
// skript.js - načtení dat ze serveru pomocí fetch()
fetch("data.php")
  .then((odpoved) => odpoved.json()) // převod odpovědi na JavaScript objekt
  .then((data) => {
    console.log("Jméno: " + data.jmeno);
    console.log("Počet bodů: " + data.pocetBodu);
    document.getElementById("vysledek").textContent =
      data.jmeno + " má " + data.pocetBodu + " bodů.";
  })
  .catch((chyba) => {
    console.log("Nastala chyba při načítání dat: " + chyba);
  });