DOM: attributen, styling, classes, events, timeouts en intervallen, willekeurige getallen en forms

Vergelijkbare documenten
Informatietechnologie 2. JavaScript. Functies, Objecten en toegang tot de DOM. Kristof Michiels

Lab Webdesign: Javascript 7 april 2008

Hell is other browsers - Sartre. JavaScript Events. Peter-Paul Koch (ppk) Kings of Code, 27 mei 2008

Sushi MIJN EERSTE WEBSITE. DE STIJL VAN HET BOVENSTE MENU AANPASSEN Kaart 6 van 10 Ik ben HTML/CSS aan het leren. Naar daar.

I'VE GOT EM FRONTEND DEVELOPMENT LES 3

Informatietechnologie 1. Inleiding tot CSS. Richtlijnen voor opmaak. Kristof Michiels

Cascading Style Sheets

Formulieren maken met Dreamweaver CS 4/CS 5

Handleiding RS Form! 1.0.4

Voor vragen: of mail naar

Javascript oefenblad 1

Variabelen en statements in ActionScript

Descendant selectors toepassen

Sushi MIJN EERSTE WEBSITE EEN WEBPAGINA BEWERKEN. Kaart 1 van 10 Ik ben HTML/CSS aan het leren

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

WEBSITE-DESIGN CHRIS VERMAAS & FJODOR VAN SLOOTEN B

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Hand-out Introduction to Programming, werkcollege 7 Alex Reuneker 2013

FFO Webdesign 1e jaar theorietoets NL niveau4... Totaal aantal vragen: 40

JavaScript. 0 - Wat is JavaScript? JavaScript toevoegen

Wat is een child-theme?

Websitecursus deel 3 JavaScript

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

Je hoeft je maar met twee bestanden bezig te houden:

Informatica: C# WPO 2

Les 9: formulier controle met javascript.

Om te beginnen heb je een geraamte van je website nodig. Maak een nieuwe map met de naam gevorderden_website aan om je website in te zetten.

Hand-out Web Technologies, werkcollege 4 Alex Reuneker (a.reuneker@hhs.nl), 2012

A Inloggen. B - Wachtwoord Veranderen

Software Instructions for Real Kids - Felix Plesoianu (2009) en Kris Merckx (2013) - Creative Commons License

Lesbrief Les 2 Basis CSS

Les 7. Instap. CSS en views: schilderijen. Pas even de header aan van het thema en zorg ervoor dat er geen websitenaam en slogan te zien is.

Informatietechnologie 2. JavaScript. Strings, getallen, datums, arrays en loops. Kristof Michiels

A Inloggen. B - Wachtwoord Veranderen

VIVA3.0. Klantenproperties. VIVA 3.0 Klantenproperties

IAI: Les 2 Vakjes maken. Rick Hazebroek r.hazebroek@cibap.nl

Access voor beginners - hoofdstuk 25

WEBSITE-DESIGN CHRIS VERMAAS & FJODOR VAN SLOOTEN B

De principes van unobtrusive JavaScript. Peter-Paul Koch (ppk) PFCongrez, 12 april 2008

Arrays en Foreach. Huub de Beer. Eindhoven, 4 juni 2011

Les 15 : updaten van gegevens in de database (deel2).

Welkom bij mijn website tutorial (Deel 2)

HTML Graphics. Hans Roeyen V 3.0

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript

Foutcontrole met Javascript

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Formulieren maken met Dreamweaver CS 4

Jarno Verhoogt 21 mei 2014 Stud. Nr Docent: Joost Faber. Deeltoets 2: Hoe maak je met javascript een eenvoudige slideshow?

drupal 4 Fons les 07 - enitity reference view 2015_03_19 1

NBTC html wijzigingen juni

Informatietechnologie 2. JavaScript. Inleidende les. Kristof Michiels

Websitecursus deel 1 HTML

Een eerste applicatie

VAN HET PROGRAMMEREN. Inleiding


Dynamische Websites. Week 2

Javascript deel 3. Document Object Model Objecten

HTML. Formulieren. Hans Roeyen V 3.0

Hand-out Web Technologies, werkcollege 5 Alex Reuneker 2012

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Roc Zadkine. Javascript animatie en bewegingen. Door: K.Bakker versie 2.0

Interactie: Document Object Model en JavaScript. Hoorcollege Webdesign 7 23 mei 2014 Christof van Nimwegen

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.

Leuk idee: de menubalk blijft zichtbaar ookal scroll je naar beneden

U kunt een waardebon toepassen op alle klanten, op een klantengroep of op een enkele klant; u kunt de vervaldatum bepalen.

Documentatie. InstantModules Q42. Versie 1.1

Nieuwe invoercellen voeg je toe door de cursor tussen twee cellen in te zetten, en invoer in te tikken.

Views, de finesse. Voorbereiding. Inhoudstypes

Objectgericht Programmeren. (in Python)

Zen Cart Attributen (artikel opties)

PHP-OPDRACHT SITE BOUWEN

Een imagemap of klikkaart is een standaard afbeelding (jpg, gif of png) waarop bepaalde zones aanklikbaar worden gemaakt.

Informatietechnologie 1. HTML: DOM, Links en Afbeeldingen. Links en afbeeldingen. Kristof Michiels

Formulier maken en opvangen met php

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

HTML krijgt een standaard opmaak van de browser

6.2 VBA Syntax. Inleiding Visual Basic

Internet_html.doc 1/6

Formulieren. Best practices

BEGINNER JAVA Inhoudsopgave

Handleiding Site to Edit Module Kaart

Vakgroep CW KAHO Sint-Lieven

Programmeerstructuren met App Inventor

[14] Functies. Volg mee via 14_Functies-1.py. We beginnen met een eenvoudig voorbeeldje:

Inhoud. Pagina 2 van 13

Formulieren en waarden posten naar een view

Voor vragen: of mail naar

Web building gevorderden: CSS & JavaScript. Karel Nijs 2008/11

Lab Webdesign: Javascript 25 februari 2008

Les 6: Abstractie, methods en parameters in Alice

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Web app Spaans voor kinderen

Datum, Tijd en Timer-object

HTML&CSS OEFENBOEKJE. van:

Voor vragen: of mail naar

Templates maken voor Joomla! Hoe maak je zelf een template voor je Joomla! website

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Modelleren en Programmeren

Transcriptie:

Informatietechnologie 2 JavaScript DOM: attributen, styling, classes, events, timeouts en intervallen, willekeurige getallen en forms Kristof Michiels

Belangrijkste bouwstenen tot nu toe: Werken met variabelen Beslissingsstructuren Loops Arrays Functies Objecten DOM: elementen vastnemen (1 of meerdere) DOM: elementen aanmaken, tekst aanmaken/wijzigen en plaatsen 2 / 45

Komen er deze week nog bij: DOM: werken met attributen DOM: elementen van styling voorzien DOM: werken met classname en classlist DOM: events Timeouts en intervallen Willekeurig getallen Werken met forms Belangrijk: al deze bouwstenen zeer goed inoefenen en omzetten in vaardigheden! 3 / 45

Werken met de DOM: het vervolg

document.queryselector() Deze document method is een modern alternatief voor.getelementbyid(). Ze geeft het eerste (!) element terug dat overeenkomt met een als argument meegegeven CSS selector. Je kunt hiervoor alle selectors gebruiken zoals je ze ook binnen een stylesheet gebruikt. Je schrijft ze op dezelfde manier:.mijnlink, #mijnnav, h1,... <h1>dit is een voorbeeld</h1> <nav id="mijnnav"> <a href="#" class="mijnlink">home</a> </nav> document.queryselector("h1").innerhtml = "Nieuwe tekst voor titel"; document.queryselector(".mijnlink").innerhtml = "Nieuwe tekst voor link"; 5 / 45

document.queryselectorall() Deze document method is een modern alternatief zowel voor.getelementsbytagname() als.getelementsbyclassname(). Ze geeft ALLE elementen terug die overeenkomen met een als argument meegegeven CSS selector. Ook hier weer kan je alle selectors gebruiken zoals je ze binnen een stylesheet gebruikt. <p class="voorbeeld">dit is een paragraaf</p> <p class="voorbeeld">dit is een andere paragraaf</p> let mijnelementen = document.queryselectorall(".voorbeeld"); let i = 0; while (i < mijnelementen.length) { mijnelementen[i].innerhtml= "We veranderen de tekst binnen de paragraaf"; i++; } 6 / 45

.getattribute() en.setattribute() Je herinnert je zonder twijfel nog dat HTML-elementen over attributen (kunnen) beschikken. Denk maar aan een a-element dat altijd een href-attribuut hoort te hebben. In het voorbeeld hieronder zie je een a-element met drie verschillende attributen: href, class en style. Met JavaScript kunnen we die attributen van (een) vastgenomen element(en) gaan opvragen, wijzigen of aanmaken. We doen dit met.getattribute() en.setattribute() <nav> <a href="https://google.com" class="extern" style="color: red;">google</a> </nav> 7 / 45

.getattribute() Met de.getattribute() method vraag je de inhoud op van een bestaand attribuut. Deze method neemt één argument, namelijk de naam van het attribuut, tussen aanhalingstekens. <nav> <a href="https://google.com" class="extern" style="color: red;">google</a> </nav> let mijnelement = document.queryselector("a"); console.log(mijnelement.getattribute("href")); // https://google.com console.log(mijnelement.getattribute("class")); // extern console.log(mijnelement.getattribute("style")); // color: red; 8 / 45

.setattribute() Met de.setattribute() method kan je de inhoud van een bestaand attribuut wijzigen of een nieuw attribuut aanmaken. Je geeft aan deze method 2 argumenten mee: de eerste verwijst naar de naam van het attribuut, de tweede naar de waarde ervan. Beiden horen tussen aanhalingstekens te staan. Geef je een attribuutnaam mee die nog niet aan het element is gekoppeld, dan wordt dit attribuut aangemaakt. <a href="https://google.com" class="extern" style="color: red;">google</a> let mijnelement = document.queryselector("a"); mijnelement.setattribute("href","https://docs.google.com"); mijnelement.setattribute("style","color: blue;"); mijnelement.setattribute("id","mijnlink"); 9 / 45

HTML Data-* attributen HTML biedt ons een speciaal soort attributen aan die we kunnen gebruiken om data op te slaan binnen een element. Je kan die data dan via JavaScript gaan gebruiken in je code. Elk element kan er zoveel bevatten als nodig. Data-* attributen bestaan uit 2 delen: De attribuut-naam: gebruik enkel kleine letters, en minstens 1 karakter lang na de pre x "data-" De attribuut-waarde: kan elke string bevatten (steeds string, ook bij getal!). <ul> <li data-dier-type="vogel" data-aanwezig-in-zoo="true">uil</li> <li data-dier-type="vis" data-aanwezig-in-zoo="false">zalm</li> <li data-dier-type="spin" data-aanwezig-in-zoo="true">tarantula</li> </ul> 10 / 45

HTML Data-* attributen Deze attributen zijn niet zichtbaar in je browser. Deze negeert deze data elementen volledig bij het weergeven van de pagina. Ze dienen enkel om data op te slaan die jij vanuit Javascript wenst te gebruiken. Je kan ze in HTML handmatig aan je elementen toevoegen of je kan ze meegeven vanuit JavaScript. Dat doe je met.setattribute(). Het opvragen van de informatie in een data-* attribuut doe je met.getattribute(). <div id="reisaanbieding" data-bestemming="parijs"></div> let mijndiv = document.queryselector("div"); let bestemming = mijndiv.getattribute("data-bestemming"); console.log(bestemming); //Parijs mijndiv.setattribute("data-periode","3 dagen"); mijndiv.setattribute("data-prijs","250 eur"); mijndiv.setattribute("data-vantot","3 april tot 7 april 2019"); 11 / 45

Elementen van styling voorzien HTML elementen van de nodige styling voorzien: het is iets dat we vaak gaan doen met behulp van JavaScript. We kunnen dit doen op 4 verschillende manieren: met het style attribuut met de style eigenschap met de classname-eigenschap met de classlist-eigenschap 12 / 45

Stylen met het style attribuut Hiermee zorgen we voor inline styling. We zagen het enkele slides terug: <nav> <a href="https://google.com" class="extern" style="color: red;">google</a> </nav> let mijnelement = document.queryselector("a"); console.log(mijnelement.getattribute("style")); // color: red; mijnelement.setattribute("style","color: blue;font-family: helvetica;"); 13 / 45

Stylen met de style eigenschap De style eigenschap biedt een andere mogelijkheid om een vastgenomen element te stylen. Let op: niet te verwarren met het style attribuut. Je doet het zoals te zien in onderstaand voorbeeld. Maar let op: de JavaScript syntax is lichtelijk anders dan bij CSS voor de style properties. Een voorbeeld: background-color wordt backgroundcolor. <h1>dit is een hoofding</h1> let mijnhoofding = document.queryselector("h1"); mijnhoofding.style.color = "red"; mijnhoofding.style.backgroundcolor = "yellow"; mijnhoofding.style.borderbottom = "0.1rem solid black"; mijnhoofding.style.textalign = "center"; console.log(mijnhoofding.style.backgroundcolor); 14 / 45

Stylen met de style eigenschap Ook hier wordt de styling inline meegegeven. Een voordeel tegenover het rechtstreeks gebruik van het style attribuut is dat hier niet telkens de volledige inline styling wordt overschreven. Handig, toch gaan wij indien mogelijk steeds gaan werken met de volgende methodes: gebruiken maken van styling via klasses. We gebruiken dan CSS waarvoor het bedoeld is: stylen. En we gebruiken JavaScript waarvoor het bedoeld is: interactie beschrijven. h1.aangepast { color: red; background-color: yellow; border-bottom: 0.1rem solid black; text-align: center; } 15 / 45

Werken met klasses Elk HTML-element kan één of meerdere klasses bevatten. We kunnen deze klasses met behulp van JavaScript gaan opvragen en/of aanpassen. Er zijn twee eigenschappen die we hiervoor kunnen gebruiken: classname en classlist. Het laat ons toe de styling zoveel mogelijk via CSS classes te beschrijven. Nog even meegeven: je kan ook rechtstreeks via het class-attribute (dus met setattribute) klasses manipuleren, maar deze methode laat ik hier even buiten beschouwing. <h2>een hoofding</h2> <h2 class="hoofding">een hoofding</h2> <h2 class="hoofding aangepast">een hoofding</h2> 16 / 45

De classname eigenschap Met deze eigenschap krijgen we toegang tot de klasses die aan een element zijn gekoppeld. Net zoals bij.innerhtml kunnen we zowel opvragen als aanpassen. Alle klasses komen terug als één enkele string. Je kan dus de klasses toevoegen maar weet dat je telkens de volledige string overschrijft. Was er al een klasse aanwezig, dan moet je die bij het aanpassen van de property mee toevoegen aan de string. let mijnelement = document.queryselector("h2"); mijnelement.classname = "mijnklasse"; // klassenaam toevoegen mijnelement.classname = ""; // klassena(a)m(en) verwijderen if (mijnelement.classname === "mijnklasse") { mijnelement.classname = ""; } else { mijnelement.classname = "mijnklasse" } mijnelement.classname = "mijnklasse mijnandereklasse"; 17 / 45

De classname eigenschap Nog een klein voorbeeld: een element onzichtbaar maken en tonen vanuit je code. Je ziet meteen ook dat je bij meerdere klasses moet opletten om geen bestaande klasses te overschrijven. <div class="mijndiv">tekst komt hier</div>.onzichtbaar { display: none; } let mijnelement = document.queryselector(".mijndiv"); mijnelement.classname = "mijndiv onzichtbaar"; mijnelement.classname = "mijndiv"; 18 / 45

De classlist eigenschap De classlist eigenschap van een element is een interessant alternatief voor classname. classlist geeft alle klasses terug voor een bepaald element. classlist.length geeft het aantal klasses die aan het element zijn gekoppeld. Bovendien beschikt classlist over enkele bijzonder krachtige methods die je in de voorbeelden aan het werk kan zien: classlist.add() : een klasse toevoegen classlist.remove() : een klasse verwijderen classlist.contains() : checken of een klasse aanwezig is classlist.toggle() : een klasse toevoegen indien afwezig, verwijderen indien aanwezig 19 / 45

De classlist eigenschap <p class="klasse1 klasse2">ik ben een paragraaf</p> let elementklasses = document.queryselector("p").classlist; console.log(elementklasses.value); // klasse1 klasse2 console.log(elementklasses[0]); // klasse1 console.log(elementklasses.length); // 2 elementklasses.add("klasse3"); // "klasse3" toegevoegd elementklasses.add("klasse4","klasse5"); // "klasse4" en "klasse5" toegevoegd if (elementklasses.contains("klasse3")) { elementklasses.remove("klasse3"); } 20 / 45

Events

Wat zijn events? Op een webpagina vinden constant gebeurtenissen plaats. Een gebruiker beweegt met de muispijl over een bepaald gedeelte van een site, een pagina laadt in, een gebruiker klikt op een knop of op een link... De lijst van events is lang. Kijk hier maar eens: https://www.w3schools.com/jsref/dom_obj_event.asp. Sommige zijn algemeen (op pagina-niveau bvb), anderen kunnen op een speci ek element plaatsgrijpen. Voorbeelden: click, mouseover, mouseout, focus, blur, keyup, keydown, keypress... Wat we met JavaScript gaan doen is met code vertellen dat we willen "luisteren" wanneer bepaalde van die events gebeuren. We kunnen er dan een functie aan koppelen die moet uitgevoerd worden telkens het event gebeurt. 22 / 45

De event property Je neemt het element vast en koppelt de event handling code vast aan de gelijknamige property van het element. <div id="mijndiv">klik op mij als je kan :-)</div> mijndiv = document.queryselector("#mijndiv"); mijndiv.onclick = function() { if (mijndiv.style.backgroundcolor === "yellow") { mijndiv.style.backgroundcolor = "orange"; } else { mijndiv.style.backgroundcolor = "yellow"; } }; 23 / 45

Event listeners We kunnen ook werken met event listeners ("event luisteraars"). Je kan listeners toevoegen, verwijderen. Je kan een listener ook laten luisteren naar meerdere events. We gaan bij voorkeur gebruik maken van event listeners. <div id="mijndiv">klik op mij als je kan :-)</div> mijndiv = document.queryselector("#mijndiv"); function verandervankleur() { if (mijndiv.style.backgroundcolor === "yellow") { mijndiv.style.backgroundcolor = "orange"; } else { mijndiv.style.backgroundcolor = "yellow"; } } mijndiv.addeventlistener("click", verandervankleur); 24 / 45

Event listeners Meerdere functies koppelen aan hetzelfde elementen: mijnelement.addeventlistener("click", mijnfunctie); mijnelement.addeventlistener("click", mijntweedefunctie); mijnelement.addeventlistener("click", function(){ console.log("hallo Wereld!"); }); // laatste regel = een anonieme functie, kan ook 25 / 45

Event listeners Verschillende events koppelen aan hetzelfde element: mijnelement.addeventlistener("mouseover", mijnfunctie); mijnelement.addeventlistener("click", mijnfunctie); mijnelement.addeventlistener("mouseout", mijnfunctie); 26 / 45

Event listeners Events verwijderen van een element doe je op deze manier: mijnelement.removeeventlistener("mouseover", mijnfunctie); mijnelement.removeeventlistener("click", mijnfunctie); mijnelement.removeeventlistener("mouseout", mijnfunctie); 27 / 45

Event listeners Events kunnen aan meerdere elementen tegelijk worden gekoppeld. Stel je een pagina voor met verschillende divs waaraan je een mouseover event en een mouseout event wil koppelen: let mijndivs = document.queryselectorall("div"); let i = 0; while (i < mijndivs.length) { mijnelement[i].addeventlistener("mouseover", function(){ this.style.backgroundcolor = "blue"; }); mijnelement[i].addeventlistener("mouseout", function(){ this.style.backgroundcolor = "white"; }); i++; } 28 / 45

Werken met "this" We zagen het al in enkele van de voorgaande voorbeelden. Bij een functie die je aan een event koppelt verwijs je naar het element zelf met "this". We hebben dit al gezien bij object methods. <button type="button">klik op mij!</button> let mijnknop = document.queryselector("button"); function mijnfunctie() { this.classlist.add("gekleurd"); } mijnelement.addeventlistener("click", mijnfunctie); 29 / 45

Timeouts en Intervallen

Timeouts en Intervallen Soms willen we dat onze JavaScript code uitgesteld verloopt. We gebruiken dit bvb voor slideshows, games, visuele e ecten... We kunnen hiervoor beroep doen op timer methods. Het zijn geen events, maar voelen zo aan. 31 / 45

settimeout() settimeout() gebeurt eenmaal en met aangegeven vertraging in milliseconden. function simpeleboodschap() { console.log("ping ping!"); } settimeout(simpeleboodschap,5000); 32 / 45

setinterval() setinterval() voert een bepaalde functie constant uit, met een tussenpauze van een aangegeven interval in milliseconden. function simpeleboodschap() { console.log("ping ping!"); } setinterval(simpeleboodschap,5000); 33 / 45

Timers neutraliseren settimeout en setinterval hebben allebei een neutraliserende tegenhanger: cleartimeout() en clearinterval(). let timeoutbehandeling = settimeout(veranderafb,50000); mijnafbeelding.addeventlistener("click", function(){ cleartimeout(timeoutbehandeling); }); let intervalbehandeling = setinterval(veranderafb,5000); mijnafbeelding.addeventlistener("click", function(){ clearinterval(intervalbehandeling); }); 34 / 45

Willekeurige getallen revisited

Math.random() We zagen eerder dat deze method een willekeurig oat-getal geeft tussen 0 en 1 (=> 0 maar <1). Onhandig om bvb. een dobbelsteenworp te simuleren, maar door gebruik te maken van enkele eenvoudige functies die je op volgende slides kan vinden wordt dit kinderspel. let mijnwillekeuriggetal = Math.random(); console.log(mijnwillekeuriggetal); // 0.007036082356442597 mijnwillekeuriggetal = Math.random(); console.log(mijnwillekeuriggetal); // 0.21367095047572682 36 / 45

Een willekeurig getal tussen 2 waarden Het volgende voorbeeld geeft een willekeurig getal terug tussen twee meegegeven waarden. Deze waarde is niet lager dan (wel mogelijk gelijk aan) min, en is kleiner dan (en niet gelijk aan) max. function geefwillekeuriggetal(min, max) { return Math.random() * (max - min) + min; } console.log(geefwillekeuriggetal(1, 6)); // 1.198938711936496 console.log(geefwillekeuriggetal(1, 6)); // 5.399657152628693 console.log(geefwillekeuriggetal(1, 6)); // 4.781542674964008 console.log(geefwillekeuriggetal(1, 6)); // 2.4529292539948866 console.log(geefwillekeuriggetal(1, 6)); // 3.0686741921278715 37 / 45

Een willekeurig geheel getal tussen 2 waarden Dit voorbeeld geeft een willekeurig geheel getal terug tussen twee meegegeven waarden. De waarde is niet lager dan min (of het volgende gehele getal groter dan min als min geen integer is), en het is kleiner dan (maar niet gelijk aan) max. function geefwillekeuriggeheelgetal(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; } console.log(geefwillekeuriggeheelgetal(1, 6)); // 4 console.log(geefwillekeuriggeheelgetal(1, 42)); // 24 console.log(geefwillekeuriggeheelgetal(100, 100000)); // 16749 console.log(geefwillekeuriggeheelgetal(1, 12000000)); // 9668902 console.log(geefwillekeuriggeheelgetal(0.5, 2000.5)); // 1119 38 / 45

Willekeurig geheel getal tussen 2 waarden (inclusief) Bij de vorige functie kon de max-waarde nooit teruggegeven worden. Met deze functie lossen we dit op. Deze is dus de veelzijdigste en we zullen ze heel vaak in onze oefeningen nodig hebben. function geefwillekeuriggeheelgetalinclusief(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; } console.log(geefwillekeuriggeheelgetalinclusief(1,6)); // 5 console.log(geefwillekeuriggeheelgetalinclusief(1,6)); // 6 console.log(geefwillekeuriggeheelgetalinclusief(1,6)); // 1 console.log(geefwillekeuriggeheelgetalinclusief(1,6)); // 1 console.log(geefwillekeuriggeheelgetalinclusief(1,6)); // 2 39 / 45

Forms en JavaScript

Toegang tot formuliervelden De inhoud van een tekstveld kunnen we opvragen met de value eigenschap. Geldt ook voor checkboxes en radiobuttons. <input type="text" id="mijnveld" naam="mijnveld"> let mijnveld = document.queryselector("input"); let mijntekst = mijnveld.value; 41 / 45

Events voor formuliervelden Ook form-elementen beschikken over events die je kan gebruiken. Voorbeelden hier zijn: focus (een gebruiker klikt op een veld), blur (een gebruiker gaat weg van een veld), change (de value van een veld verandert), keypress (een toets wordt ingedrukt bij een veld),... We kunnen deze events op dezelfde manier als getoond bij de eerdere slides. Probeer het zelf eens! 42 / 45

Form events Ook voor de form zelf bestaan er een aantal events. Hier zie je het submit event aan het werk. Het is een belangrijk event dat verhindert dat een klikken op submit de pagina opnieuw doet inladen. document.queryselector("form").addeventlistener("submit", function(){ return false; }); Je kan dit ook op element-niveau oplossen met event.preventdefault() document.queryselector("#mijnlink").addeventlistener("click", function(event){ event.preventdefault() }); 43 / 45

Genoeg voor nu! We hebben vandaag gezien: DOM: werken met attributen DOM: elementen van styling voorzien DOM: werken met classname en classlist DOM: events Timeouts en intervallen Willekeurig getallen Werken met forms 44 / 45

IT2 - JavaScript: les 2 DOM: attributen, styling, classes, events, timeouts en intervallen, willekeurige getallen en forms kristof.michiels01@ap.be