Vytvořte si repozitář ze šablony cviceni-hesla se stránkou, která obsahuje tři různé funkce na generování hesel. Každá funkce vygeneruje heslo zadané délky s určitou bezpečnostní silou. Kód funkcí zkoumat nemusíte, obsahuje věci, které jsme zatím neprobírali.
Příklad samostatného použití jednotlivých funkcí:
weakPassword(5); // → '01234'
mediumPassword(8); // → '48140525'
strongPassword(6); // → 'azc7mw'
Napište funkci createAccount
, která se bude tvářit, že zakládá nový uživatelský účet. Funkce bude mít dva parametry user
a generatePassword
. První bude uživatelské jméno a druhý bude funkce, pomocí které se má vygenerovat heslo pro tento účet. Funkce createAccount
vrátí řetězec, který bude obsahovat jméno uživatele a heslo vygenerované voláním funkce generatePassword
. Funkci generatePassword
při volání předejte číslo 9 jako délku hesla.
Na konci javascriptového kódu vyzkoušejte založit více různých účtů s různými typy hesel. Například:
document.body.innerHTML += `
<p>${createAccount('Míša', weakPassword)}</p>
<p>${createAccount('Řízek', mediumPassword)}</p>
<p>${createAccount('Mápodčepicí', strongPassword)}</p>
`;
by mělo vepsat do stránky něco jako:
Uživatel Míša s heslem 012345678
Uživatel Řízek s heslem 074031827
Uživatel Mápodčepicí s heslem mwwf9epts
Řešení
const createAccount = (user, generatePassword) => {
return `Uživatel ${user} s heslem ${generatePassword(9)}`;
};
document.body.innerHTML += `
<p>${createAccount('Míša', weakPassword)}</p>
<p>${createAccount('Řízek', mediumPassword)}</p>
<p>${createAccount('Mápodčepicí', strongPassword)}</p>
`;
Pojďme dále rozvinout cvičení s vyplňováním e-mailu z předchozí lekce.
- Vytvořte si repozitář ze šablony cviceni-email-podruhe.
- Všimněte si funkce
goodbye
, která generuje pozdrav na konec e-mailu. Přidejte alespoň dvě další funkce, kde každá generuje k zadanému jménu jiný typ pozdravu. NapříkladformalGoodbye
pro velmi formální pozdravy jako „S uctivou poklonou…“, nebo naopakrudeGoodbye
typu „Se měj…“, pokud se chcete rozloučit nevybíravě. - Upravte funkci
fillBody
tak, aby brala třetí parametrgoodbyeFunction
představující funkci, pomocí které se má vygenerovat závěrečný pozdrav. Vyzkoušejte zavolat funkcifillBody
postupně s každou z vašich zdravících funkcí a ověřte, že vše správně funguje.
fillSubject('Obchodní sdělení');
fillBody(
'Kupte mycí prostředek, který vám vytře zrak, se slevou 50 %.',
'Jan Čistý',
formalGoodbye
);
nebo
fillSubject('Pozvánka na oslavu narozenin');
fillBody('Zítra oslava. 18:00 ve Starý hospodě.', 'Patrik Veselý', rudeGoodbye);
Řešení
const goodbye = (name) => {
return 'S pozdravem ' + name;
};
const formalGoodbye = (name) => {
return 'S uctivou poklonou ' + name;
};
const rudeGoodbye = (name) => {
return 'Se měj. ' + name;
};
const fillSubject = (subject) => {
document.querySelector('.email__subject').textContent = subject;
};
const fillBody = (body, name, goodbyeFunction) => {
const bodyElement = document.querySelector('.email__body');
bodyElement.innerHTML = body;
const closingElement = document.querySelector('.email__closing');
closingElement.textContent = goodbyeFunction(name);
};
Vytvoříme jednoduchou stránku s objednávacím tlačítkem.
- Založte HTML stránku s jedním tlačítkem
<button id="button-order">Objednat</button>
- Doplňte do stránky JavaScriptový program, který zařídí, že po stisknutí tlačítka se do stránky za tlačítko vypíše odstavec:
<p>Objednáno</p>
- Upravte program tak, že text se nevypíše do stránky, ale zobrazí se na samotném tlačítku.
Řešení
const button = document.querySelector('#button-order');
button.addEventListener('click', () => {
// document.body.innerHTML += '<p>Objednáno</p>';
button.textContent = 'Objednáno';
});
Vyjděte z řešení předchozího příkladu, kdy se objednává při kliknutí na tlačítko.
- Zařiďte úpravou přímo v HTML souboru, aby při načtení stránky tlačítko obsahovalo zprávu Kontroluji dostupnost…
- Přidejte do stránky zpoždění pomocí funkce
setTimeout
, která zařídí, že 8 vteřin po načtení stránky se zpráva na tlačítku změní na Objednat. - Tlačítka mají speciální HTML atribut s názvem
disabled
. Pokud je tento atribut přítomen, na tlačítko se nedá kliknout. Přidejte tento atribut do HTML kódu tlačítka, aby tlačítko bylo při načtení stránky nedostupné/neklikatelné. Až po uplynutí časovače jej zpřístupněte nastavením vlastnostidisabled
v JavaScriptu nafalse
.
Řešení
<button id="button-order" disabled>Kontroluji dostupnost…</button>
const button = document.querySelector('#button-order');
setTimeout(() => {
button.textContent = 'Objednat';
button.disabled = false;
}, 8000);
button.addEventListener('click', () => {
button.textContent = 'Objednáno';
});
Vytvořte si repozitář ze šablony cviceni-zarovka se stránkou, která zobrazuje obyčejnou žárovku.
- Pomocí JavaScriptu zařiďte, aby se při stisknutí libovolné klávesy na stránce přidala k elementu žárovky CSS třída
bulb--on
. Žárovka by se takto měla rozsvítit. - Vylepšete program tak, aby na následné stisknutí libovolné klávesy žárovka opět zhasnula. Opakovaným mačkáním kláves ji tak můžeme rozsvěcovat a zhasínat.
Řešení
const bulb = document.querySelector('.bulb');
document.addEventListener('keydown', () => {
bulb.classList.toggle('bulb--on');
});