Forms are how every website collects data — sign-ups, logins, search bars. Let's build one from scratch!
text — plain textemail — validates email formatpassword — hides charactersnumber — numbers onlycheckbox — tick boxradio — pick one optiondate — date pickerreturn exits the function immediately — the rest doesn't run"hello".length = 5. Use it to check if a password is long enoughInstead of alerts, show errors next to the input — much better UX!
:focus selector applies styles when the user clicks into the inputname groups them).checked not .value to read checkboxCreate a registration form with validation for all fields
email.includes("@") returns true or falseEver wondered how a website remembers you? localStorage lets you save data that survives page refresh!
Think of it as a tiny notebook your browser keeps — it remembers data even after you close the tab
localStorage only stores text — use JSON.stringify() to save objects and JSON.parse() to read them back
Upgrade your to-do app — tasks now survive page refresh!
condition ? valueIfTrue : valueIfFalse — a compact if/else on one lineCombine forms (Lesson 5) with localStorage to remember the user
APIs power every app you use. Learn how to fetch real live data from the web inside your own webpage!
fetch() sends a request to a URL and returns a promise — then() runs when data arrives
APIs often return arrays of objects — loop through them to display each one
${variable} to embed variables directly in strings — much cleaner than "+" concatenationUse the free PokeAPI to search for any Pokemon by name
Put everything together — HTML, CSS, JS, forms, localStorage and an API — in one polished project you can show anyone!
index.html — the structurestyle.css — all the stylingapp.js — all the JavaScript