De DOM (Document Object Model) is de structuur van je HTML-pagina. Met JavaScript kun je elementen in de DOM selecteren en aanpassen. Hiermee kun je:
Om een element te selecteren gebruik je document.querySelector(). Deze functie zoekt naar een element met behulp van een CSS selector.
let element = document.querySelector("p"); // Selecteert de eerste <p>
let element2 = document.querySelector("#myId"); // Selecteert element met id="myId"
let element3 = document.querySelector(".myClass"); // Selecteert eerste element met class="myClass"
querySelector werkt net als CSS selectors: gebruik # voor een id, . voor een class, en gewoon de tag naam voor HTML elementen.
Laten we beginnen met het selecteren van elementen op de pagina.
Selecteer het element met id title en sla het op in een variabele element.
Selecteer de eerste <p> tag en sla het op in een variabele paragraph.
Selecteer het element met class header en sla het op in een variabele headerElement.
Selecteer het element met id main-content en sla het op in een variabele mainContent.
Selecteer de eerste <button> en sla het op in een variabele btn.
Selecteer het element met class active en sla het op in een variabele activeElement.
Selecteer de eerste <div> en sla het op in een variabele container.
Selecteer het element met id app en sla het op in een variabele app.
Selecteer de eerste <h1> en sla het op in een variabele heading.
Selecteer het element met class menu-item en sla het op in een variabele menuItem.
Elk DOM element heeft een textContent property. Hiermee kun je de tekst van een element lezen of veranderen.
let element = document.querySelector("#title");
console.log(element.textContent); // Leest de tekst
element.textContent = "Nieuwe tekst"; // Verandert de tekst
Selecteer het element met id heading. Verander de textContent naar "Welkom!".
Selecteer de eerste <p> tag. Sla de textContent op in een variabele tekst.
Selecteer het element met id message. Verander de tekst naar "Hallo wereld!".
Selecteer het element met class info. Verander de tekst naar "Dit is informatie".
Selecteer de eerste <button>. Verander de tekst naar "Klik hier".
Selecteer het element met id counter. Verander de tekst naar het getal 0.
Selecteer het element met id name. Lees de textContent en sla het op in een variabele userName. Log userName.
Selecteer de eerste <h2>. Verander de tekst naar "Hoofdstuk 1".
Selecteer het element met class status. Verander de tekst naar "Actief".
Selecteer het element met id price. Verander de tekst naar "€19.99".
Je kunt CSS stijlen aanpassen via de style property. Elke CSS property kun je benaderen, maar met camelCase in plaats van kebab-case.
let element = document.querySelector("#box");
element.style.color = "red"; // CSS: color: red;
element.style.backgroundColor = "blue"; // CSS: background-color: blue;
element.style.fontSize = "20px"; // CSS: font-size: 20px;
CSS properties met een streepje (zoals background-color) worden in JavaScript camelCase: backgroundColor. Let op dat waarden altijd strings zijn met eenheden: "20px", niet 20.
Selecteer het element met id box. Verander de color style naar "red".
Selecteer de eerste <p>. Verander de fontSize naar "20px".
Selecteer het element met class highlight. Verander de backgroundColor naar "yellow".
Selecteer het element met id banner. Verander de color naar "white" en de backgroundColor naar "black".
Selecteer de eerste <h1>. Verander de textAlign naar "center".
Selecteer het element met id container. Verander de width naar "500px".
Selecteer het element met class button. Verander de padding naar "10px" en de borderRadius naar "5px".
Selecteer het element met id image. Verander de display naar "none".
Selecteer de eerste <div>. Verander de margin naar "20px".
Selecteer het element met class card. Verander de border naar "1px solid black", de padding naar "15px", en de backgroundColor naar "#f0f0f0".
Elementen hebben attributes zoals src, href, id, class, etc. Je kunt deze lezen en aanpassen.
let link = document.querySelector("a");
console.log(link.href); // Leest de href attribute
link.href = "https://example.com"; // Verandert de href
let img = document.querySelector("img");
img.src = "photo.jpg"; // Verandert de src
img.alt = "Een foto"; // Verandert de alt tekst
Selecteer het element met id link. Verander de href attribute naar "https://google.com".
Selecteer de eerste <img>. Verander de src naar "logo.png".
Selecteer het element met id photo. Verander de alt attribute naar "Landschap foto".
Selecteer de eerste <a> tag. Lees de href en sla het op in een variabele url.
Selecteer het element met class profile-pic. Verander de src naar "avatar.jpg" en de alt naar "Profiel foto".
Selecteer het element met id website. Verander de href naar "https://wikipedia.org" en de textContent naar "Bezoek Wikipedia".
Selecteer de eerste <input>. Verander de value naar "Typ hier...".
Selecteer het element met id banner-img. Verander de src naar "banner.jpg".
Selecteer de eerste <a>. Verander de href naar "https://github.com" en de target naar "_blank".
Selecteer het element met class thumbnail. Lees de src en sla het op in een variabele imageSrc. Log imageSrc.
Je kunt CSS classes toevoegen of verwijderen met classList.add() en classList.remove().
let element = document.querySelector("#box");
element.classList.add("active"); // Voegt class "active" toe
element.classList.remove("hidden"); // Verwijdert class "hidden"
element.classList.toggle("visible"); // Toggle: voeg toe als niet aanwezig, verwijder als wel aanwezig
Selecteer het element met id menu. Voeg de class "open" toe met classList.add().
Selecteer de eerste <div>. Verwijder de class "hidden" met classList.remove().
Selecteer het element met id sidebar. Voeg de class "collapsed" toe.
Selecteer het element met class button. Voeg de class "active" toe en verwijder de class "disabled".
Selecteer het element met id modal. Toggle de class "visible" met classList.toggle().
Selecteer de eerste <p>. Voeg de class "highlight" toe.
Selecteer het element met class card. Verwijder de class "inactive".
Selecteer het element met id notification. Voeg de classes "show" en "fade-in" toe (twee aparte add aanroepen).
Selecteer het element met class dropdown. Toggle de class "expanded".
Selecteer het element met id theme-toggle. Toggle de class "dark-mode".
Je kunt nieuwe HTML elementen maken met document.createElement() en ze toevoegen aan de pagina met appendChild().
let newDiv = document.createElement("div"); // Maak een nieuwe <div>
newDiv.textContent = "Ik ben nieuw!"; // Geef het text
newDiv.classList.add("new"); // Voeg een class toe
let container = document.querySelector("#container");
container.appendChild(newDiv); // Voeg de nieuwe div toe aan container
Maak een nieuwe <p> met createElement. Sla het op in een variabele newParagraph. Verander de textContent naar "Nieuwe paragraaf".
Maak een nieuwe <div>. Verander de textContent naar "Hallo". Selecteer het element met id container en voeg de nieuwe div toe met appendChild().
Maak een nieuwe <button>. Verander de textContent naar "Klik". Voeg de class "btn" toe.
Maak een nieuwe <h2>. Verander de textContent naar "Titel". Selecteer het element met id header en voeg de nieuwe h2 toe.
Maak een nieuwe <img>. Verander de src naar "photo.jpg" en de alt naar "Foto".
Maak een nieuwe <li> met textContent "Item 1". Selecteer het element met id list en voeg de nieuwe li toe.
Maak een nieuwe <a>. Verander de href naar "https://example.com" en de textContent naar "Klik hier". Selecteer het element met class nav en voeg de link toe.
Maak een nieuwe <div> met class "box" en textContent "Box 1". Verander de backgroundColor style naar "lightblue".
Maak een nieuwe <span> met textContent "Nieuw" en class "badge". Selecteer het element met id title en voeg de span toe.
Maak een for loop die van 1 tot 5 telt. In de loop, maak een nieuwe <p> met textContent "Paragraaf " + i. Selecteer het element met id content en voeg elke p toe.
Nu combineren we alles: elementen selecteren, aanpassen, classes toevoegen, en nieuwe elementen maken.
Maak een functie changeColor(id, color) die een element selecteert op basis van id en de backgroundColor verandert. Roep de functie aan met "box" en "red".
Maak een functie toggleClass(selector, className) die een element selecteert en de class togglet. Test met ".menu" en "open".
Maak een functie createListItem(text) die een nieuwe <li> maakt, de textContent instelt, en het element teruggeeft. Roep de functie aan met "Item 1", sla op in item. Selecteer #list en voeg item toe.
Maak een array colors met ["red", "blue", "green"]. Loop door de array. Voor elke color, maak een nieuwe <div>, verander de backgroundColor naar die color en de width/height naar "50px". Selecteer #container en voeg elke div toe.
Maak een functie hideElement(selector) die een element selecteert en de display style naar "none" zet. Maak een functie showElement(selector) die display naar "block" zet. Test beide met "#popup".
Maak een functie updateCounter(id, value) die een element selecteert en de textContent instelt op de value. Maak een variabele count met waarde 0. Roep updateCounter("#counter", count) aan. Verhoog count met 1 en roep weer aan. Doe dit nog twee keer.
Maak een functie createCard(title, description) die een nieuwe <div> met class "card" maakt, een <h3> met de title en een <p> met de description maakt, beide toevoegt aan de card, en de card teruggeeft. Maak een card met title "Product" en description "Dit is een product". Selecteer #products en voeg de card toe.
Maak een array items met ["Appel", "Banaan", "Sinaasappel"]. Loop door de array. Voor elk item, maak een <li> met de textContent van het item en class "fruit". Als de index even is (gebruik i % 2 === 0), voeg de class "highlight" toe. Selecteer #fruit-list en voeg elke li toe.
Maak een functie setAttributes(selector, attrs) waarbij attrs een object is met attribute namen en waarden. Loop door de keys van het object (met een for loop of gewoon hardcoded) en stel elke attribute in. Test met "#link" en een object {href: "https://google.com", target: "_blank", textContent: "Google"}.
Maak een functie buildTable(rows, cols) die een <table> maakt met het aantal rijen en kolommen. Elke cel (td) krijgt de textContent "R" + row + "C" + col (bijv. "R1C1"). De functie geeft de table terug. Maak een table met 3 rijen en 4 kolommen. Selecteer #table-container en voeg de table toe.