JavaScript — Introduktion genom exempel

2.13 HTML-element

Vi har i tidigare exempel använt querySelector(), för att komma åt enskilda element. Nu ska vi också se hur vi kan komma åt en grupp av element med querySelectorAll(). Vi repeterar också en del som vi redan varit inne på i tidigare exempel, t.ex. hur vi kan komma åt det element som användaren klickat på och ändring av elementst stil och klass.

I detta exempel tas det även upp hur vi går runt i HTML-strukturen till omgivande element. Det tas också upp två metoder för att komma åt och förändra attribut. Exemplet är uppdelat i två delar:

35 min.

Sammanfattning

Med querySelector("selektor") får vi det första elementet som erhålls med selektorn. Med querySelectorAll("selektor") får vi en lista (array) med alla de element som erhålls med selektorn.

Med this får vi en referens till det element som användaren interagerat med (t.ex. klickat på), för att komma in i funktionen.

Med element.parentElement får vi elementets "förälder", dvs det element som omger det som vi utgår från. Ett steg uppåt i HTML-strukturen.

Med element.previousElementSilbling och element.nextElementSibling går vi till ett "syskon", dvs det element som ligger före eller efter i HTML-koden, men på samma nivå i strukturen. Finns det inget sådant element, erhålls null som resultat.

De fördefinierade attributen i HTML kan man komma åt med element.attribut. Men har vi egendefinierade attribut som innehåller ett bindestreck, t.ex. data-myAttribute, kan vi inte referera till det på samma sätt, eftersom bindestrecket då tolkas som en minusoperator. Då får vi istället använda funktionerna getAttribute() och setAttribute(). Dessa funktioner fungerar naturligtvis även för de fördefinierade attributen.

Knappar (button-element) och andra element i formulär kan inaktiveras eller aktiveras, genom att sätta egenskapen disabled till true eller false. Detta har redan använts i tidigare exempel, men repeteras här.

Egna övningar

Här följer ett förslag på några egna övningar. Öppna filen test.html och test.js och utför följande: