const inputId = document.getElementById("userId"); const btnNajdi = document.getElementById("btnNajdi"); const btnVse = document.getElementById("btnVse"); const stav = document.getElementById("stav"); const vysledek = document.getElementById("vysledek"); const postyKontejner = document.getElementById("posty-kontejner"); const btnPosty = document.getElementById("btnPosty"); let aktualniUserId = null; // FUNKCE 1 : Načtení všech uživatelů async function nactiVsechny() { vysledek.innerHTML = ""; stav.innerText = "Načítám seznam všech uživatelů"; try{ const odpoved = await fetch("https://jsonplaceholder.typicode.com/users") if (!odpoved.ok){ throw new Error("Nepodařilo se stáhnout seznam uživatelů") } const data = await odpoved.json(); //Vytvoření seznam (createElement/appendChild) const ul = document.createElement("ul"); data.forEach(u => { const li = document.createElement("li"); li.innerText = u.name ul.appendChild(li); }); vysledek.appendChild(ul) stav.innerText = "Seznam Načten" } catch (e) { stav.innerText = "CHYBA:" + e.message; } } async function nactiJednoho() { const id = inputId.value; vysledek.innerHTML = ""; postyKontejner.innerHTML = ""; btnPosty.disabled = true; aktualniUserId = null; stav.innerText = `Hledám uživatele s ID: ${id}`; try{ const odpoved = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`) if(!odpoved.ok) { throw new Error(`Uživatel s ID ${id} neexistuje (HTTP ${odpoved.status})`); } const u = await odpoved.json(); vysledek.innerHTML = `

${u.name} (ID:${u.id})

`;//AltGR + ý = ` (Template literal) stav.innerText = "Uživatel nalezen" //aktivace vyhledávání postů aktualniUserId = u.id; btnPosty.disabled = false; btnPosty.innerText = `Načíst příspvěky (autor: ${u.name})` } catch (error) { stav.innerText = "Došlo k chybě"; vysledek.innerHTML = `

Chyba:${error.message}

` console.error("Podropbnosti chyby:",error) } finally { console.log(`Pokus o načtení ID ${id} dokončen`); } } async function nactiPosty() { //Pojistka pokud nemame ID if(!aktualniUserId) return; postyKontejner.innerHTML = "

Načítám příspěvky

"; btnPosty.disabled = true; //zabráníme opakovanému klikání během načítaní try { const odpoved = await fetch(`https://jsonplaceholder.typicode.com/users/${aktualniUserId}/posts`) if(!odpoved.ok) { throw new Error(`Uživatel s ID ${id} neexistuje (HTTP ${odpoved.status})`); } const posty = await odpoved.json(); const html = posty.map(p => `
${p.title}

${p.body}

`).join(""); postyKontejner.innerHTML = `

Příspěvky autora (${posty.length})

` +html; stav.innerText = "Data načtena" } catch(e){ postyKontejner.innerHTML = `

chyba:${e.message}

` } finally { btnPosty.disabled = false } } btnVse.addEventListener("click",nactiVsechny); btnNajdi.addEventListener("click",nactiJednoho); btnPosty.addEventListener("click",nactiPosty)