際際滷

際際滷Share a Scribd company logo
JavaScript och DOM
Det h辰r har vi gjort f旦rut
Johan Holmberg 2019-04-07
Dagens f旦rel辰sning
 F旦rra veckans bravader
 DOM
 H辰ndelser i JavaScript
F旦rra veckan
 Vi tittade p奪 vad JavaScript 辰r och dess bakgrund
 Vi tittade p奪 syntaxen i JavaScript
 Vi l辰rde oss att arbeta med variabler, operationer och
fl旦deskontroll (if, switch, loopar)
 Vi tittade p奪 funktioner
Spr奪ket Javascript
 Ursprungligen avsett f旦r att g旦ra webbsidor roligare
 Bra st旦d f旦r att manipulera DOM
 Bra st旦d i de flesta webbl辰sare
 K旦rs numera lite 旦ver allt
 Har numera ett bra st旦d av tredjepartsbibliotek
Spr奪ket Javascript
 Syntaxen liknar C, Java, etc
 L旦st typat  inga explicita variabeltyper
 Multiparadigm:
 H辰ndelsedrivet
 Funktionellt
 Prototypbaserat (ungef辰r som objektorienterat)
 Imperativt
DOM
VanillaJS  JavaScript utan ramverk
Vad 辰r DOM?
HTML DOM (Document Object Model):
 En representation av HTML-dokumentet som ett tr辰d
av element  noder.
 HTML-objektet kan ses som ett stort objekt
Vad 辰r DOM?
<!DOCTYPE html>
<html>
<head>
<title>The Batcave</title>
</head>
<body>
<p>
Hello <span>there</span> Batman!
<img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png">
</p>
</body>
</html>
html
head body
title p
span img
The
Batcave
Hello Batman!
there
Kom 奪t element/noder
Det finns fyra s辰tt att komma 奪t element i DOM-tr辰det:
 document.getElementById(id)  ett element
 document.getElementByTagName(tagName)  en
samling av element
 document.getElementByClassName(className)  en
samling av element
 document.querySelector(query)  ett element
Hitta alla element av en specifik typ
var elements = document.getElementByTagName("p");
Hittar alla p-element och returnerar ett objekt av typen
HTMLCollection, som liknar ett array-objekt:
var el = elements[0]; // F旦rsta elementet i samlingen
var size = elements.length; // Antal element
ID kontra klass i HTML

Enskilda HTML-element (kan) identifieras med ett ID:
 Ett ID best奪r av en str辰ng
 ID:n 辰r unika och kan bara finnas en g奪ng per dokument
 Refereras till som #mitt_id

Ett element kan tillh旦ra en klass:
 Ett klassnamn best奪r av en str辰ng
 Flera element kan tillh旦ra samma klass.
 Refereras till som .min_klass
Exempel p奪 anv辰ndande av ID
<!DOCTYPE html>
<html>
<head>
<title>Sample Site</title>
</head>
<body>
<p>
Hello <span id="location">there</span> Batman!
<img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png">
</p>
<button onclick="relocate()">Change text</button>
<script>
function relocate() {
document.getElementById("location").innerHTML = "here";
}
</script>
</body>
</html>
V奪rt ID
V奪rt ID
Exempel p奪 anv辰ndande av klass
<!DOCTYPE html>
<html>
<head>
<title>Sample Site</title>
<style>
li.real_deal {
color: red;
}
</style>
</head>
<body>
<h1>Batman's gadgets</h1>
<ul>
<li class="real_deal">Batarang</li>
<li class="real_deal">Batmobile</li>
<li class="bad_pun">Batteries</li>
</ul>
</body>
</html>
Den h辰r regeln
matchar de h辰r elementen
Exempel p奪 anv辰ndande av b奪da
<!DOCTYPE html>
<html>
<head>
<title>Sample Site</title>
</head>
<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li class="real_deal">Batarang</li>
<li class="real_deal">Batmobile</li>
<li class="bad_pun">Batteries</li>
</ul>
</body>
</html>
Query Selector
var element = document.querySelector(".someClass");
Returnerar den f旦rsta noden av klassen someClass.
Kan anv辰ndas med:
 Taggnamn: document.querySelector("tag");
 Klassnamn: document.querySelector(".someClass");
 ID: document.querySelector("#someID");
Navigera i DOM
<!DOCTYPE html>
<html>
<head>
<title>The Batcave</title>
</head>
<body>
<p>
Hello <span>there</span> Batman!
<img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png">
</p>
</body>
</html>
html
head body
title p
span img
The
Batcave
Hello Batman!
there
Navigera i DOM  f旦r辰ldrar och barn
html
head body
title p
span img
The
Batcave
Hello Batman!
there
parentNode
firstChild lastChild
body.parentNode  html
html.firstChild  head
html.lastChild  body
html.childNodes[1]  body
Navigera i DOM  syskon
html
head body
title p
span img
The
Batcave
Hello Batman!
there
nextSibling
previousSibling
head.nextSibling  body
body.previousSibling  head
Modifiera en nod
Vi beh旦ver k辰nna till tv奪 typer av egenskaper hos en nod:
 InnerHTML

Den text som innesluts av ett HTML-element

Kan vara HTML-kod
 Attribut

F旦r辰ndrar ett elements beteende. Exempel:
 src
 style
Vad 辰r vad?
...
<p>
Hello <span>there</span> Batman!
<img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png">
</p>
...
p
span imgHello Batman!
there
src
span.innerHTML
Attribut: img.src
Arbeta med innerHTML
<!DOCTYPE html>
<html>
<head>
<title>Sample Site</title>
</head>
<body>
<h1>Welcome to the Batcave!</h1>
<p>
Alfred is <span id="status">out</span>.
</p>
<script>
var status = document.getElementById("status");
status.innerHTML = "in";
</script>
</body>
</html>
Arbeta med attribut
<!DOCTYPE html>
<html>
<head>
<title>Sample Site</title>
</head>
<body>
<h1>Welcome to Arkham Asylum!</h1>
<h2>Inmate of the month:</h2>
<img id="inmate" src=/slideshow/javascript-och-dom/140006121/"penguin.jpg">
<script>
var imnate = document.getElementById("inmate");
inmate.setAttribute("src", "joker.jpg");
</script>
</body>
</html>
Special: attribut-noder och CSS
 Attributet style (inline CSS) 辰r en attribut-nod och hanteras
s奪 h辰r:
...
<body>
<h1>Welcome to Wayne Mansion!</h1>
<p>
Alfred is <span id="status" style="color: red">out</span>.
</p>
<script>
var status = document.getElementById("status");
status.innerHTML = "in";
status.style.color = "green";
</script>
</body>
...
L辰gg till nya element till tr辰det
Vi skapar nya element genom att anv辰nda oss av
document.createElement("tag_name")
Nya element beh旦ver ofta text. Det skapas s奪 h辰r:
document.createTextNode("My text")
Dessa sammanfogas sedan:
var p = document.createElement("p");
var textNode = document.createTextNode("Batman");
p.appendChild(textNode);
L辰gg in nya element till tr辰det
Vi har tv奪 s辰tt att l辰gga till nya element till tr辰det
 element.appendChild(node)
l辰gg node sist bland barnen till element
 element.insertBefore(node, child)
l辰gg till f旦re elementet child
Exempel p奪 appendChild()
<!DOCTYPE html>
<html>
...
<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li id="batarang" class="real_deal">Batarang</li>
<li id="batmobile" class="real_deal">Batmobile</li>
<li id="batteries" class="bad_pun">Batteries</li>
</ul>
<script>
var batcave = document.createElement("li");
var label = document.createTextNode("Bat cave");
batcave.appendChild(label);
var parent = document.getElementById("gadget_list");
parent.appendChild(batcave);
</script>
</body>
</html>
Exempel p奪 insertBefore()
<!DOCTYPE html>
<html>

<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li id="batarang" class="real_deal">Batarang</li>
<li id="batmobile" class="real_deal">Batmobile</li>
<li id="batteries" class="bad_pun">Batteries</li>
</ul>
<script>
var batcave = document.createElement("li");
var label = document.createTextNode("Bat cave");
batcave.appendChild(label);
var parent = document.getElementById("gadget_list");
var batteries = document.getElementById("batteries");
parent.insertBefore(batcave, batteries);
</script>
</body>
</html>
Exempel p奪 insertBefore()
<!DOCTYPE html>
<html>

<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li id="batarang" class="real_deal">Batarang</li>
<li id="batmobile" class="real_deal">Batmobile</li>
<li id="batteries" class="bad_pun">Batteries</li>
</ul>
<script>
var batcave = document.createElement("li");
var label = document.createTextNode("Bat cave");
batcave.appendChild(label);
var batteries = document.getElementById("batteries");
batteries.parentNode.insertBefore(batcave, batteries);
</script>
</body>
</html>
Ta bort element fr奪n tr辰det
Vi har tv奪 s辰tt att ta bort element fr奪n DOM-tr辰det:
 parent.removeChild(child)
tar bort ett element
 parent.replaceChild(element1, element2)
ers辰tter ett element
Ta bort ett element
<!DOCTYPE html>
<html>
...
<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li id="batarang" class="real_deal">Batarang</li>
<li id="batmobile" class="real_deal">Batmobile</li>
<li id="batteries" class="bad_pun">Batteries</li>
</ul>
<script>
var parent = document.getElementById("gadget_list");
var child = document.getElementById("batmobile");
parent.removeChild(child);
</script>
</body>
</html>
Ta bort ett element
<!DOCTYPE html>
<html>
...
<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li id="batarang" class="real_deal">Batarang</li>
<li id="batmobile" class="real_deal">Batmobile</li>
<li id="batteries" class="bad_pun">Batteries</li>
</ul>
<script>
var child = document.getElementById("batmobile");
child.parentNode.removeChild(child);
</script>
</body>
</html>
Ers辰tt ett element
<!DOCTYPE html>
<html>

<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li id="batarang" class="real_deal">Batarang</li>
<li id="batmobile" class="real_deal">Batmobile</li>
<li id="batteries" class="bad_pun">Batteries</li>
</ul>
<script>
var batcave = document.createElement("li");
var label = document.createTextNode("Bat cave");
batcave.appendChild(label);
var parent = document.getElementById("gadget_list");
var batteries = document.getElementById("batteries");
parent.replaceChild(batcave, batteries);
</script>
</body>
</html>
Ers辰tt ett element
<!DOCTYPE html>
<html>

<body>
<h1>Batman's gadgets</h1>
<ul id="gadget_list">
<li id="batarang" class="real_deal">Batarang</li>
<li id="batmobile" class="real_deal">Batmobile</li>
<li id="batteries" class="bad_pun">Batteries</li>
</ul>
<script>
var batcave = document.createElement("li");
var label = document.createTextNode("Bat cave");
batcave.appendChild(label);
var batteries = document.getElementById("batteries");
batteries.parentNode.replaceChild(batcave, batteries);
</script>
</body>
</html>
H辰ndelser i JavaScript
Vad 辰r h辰ndelser?
En h辰ndelse 辰r ett meddelande som skickas till JavaScript-
motorn, och som sedan p奪verkar k旦rningen av programmet.
Exempel:
 Anv辰ndaren klickar p奪 en knapp
 Ett AJAX-anrop (dvs HTTP) slutf旦rs
 En timeout tar slut
 Ett formul辰r skickas
Vi kan lyssna efter dessa h辰ndelser och reagera p奪 dem!
Vanliga h辰ndelser i JavaScript/DOM
 Blur  n辰r ett objekt f旦rlorar fokus
 Click  n辰r anv辰ndaren klickar p奪 ett objekt
 Focus  n辰r ett objekt f奪r fokus
 Load  n辰r objektet 辰r f辰rdigladdat
 Mouseover  n辰r muspekaren sv辰var 旦ver objektet
 Select  n辰r ett val i en drop down-meny v辰ljs
 Submit  n辰r ett formul辰r skickas
Reagera p奪 h辰ndelser
K旦rning av JavaScript i webbl辰saren 辰r asynkron. JS-
motorn har en lista av kod som den kan k旦ra.
Motorn k旦r kod s奪 l辰nge den kan, en funktion i taget, och
delegerar allt h奪rt arbete till webbl辰saren.
N辰r webbl辰saren 辰r f辰rdig med ett uppdrag (eller f奪r en
input fr奪n anv辰ndaren) l辰ggs ett uppdrag i JavaScript-
motorns att g旦ra-lista.
Metoden .addEventListener()
element.addEventListener(event, function, useCapture);
 Parametern event 辰r en str辰ng som anger vilken h辰ndelse vi vill
lyssna efter.
 Parametern function 辰r en funktionspekare och ber辰ttar vilken
funktion som ska k旦ras n辰r h辰ndelsen intr辰ffar. Den kan vara
anonym.
 Parametern useCapture ber辰ttar om vi vill anv辰nda event bubbling
eller event capturing. verkurs, och helt frivilligt att anv辰nda.
 Ett element kan ha flera event listeners, 辰ven per h辰ndelse!
Exempel med addEventListener()
<!DOCTYPE html>
<html>
...
<body>
<h1>Welcome to the Wayne Mansion intercom system!</h1>
<span id="caller">Click to summon Alfred</span>
<script>
var caller = document.getElementById("caller");
caller.addEventListener("click", callAlfred);
function callAlfred() {
alert("You called, Master Wayne");
}
</script>
</body>
</html>
Ad

Recommended

PDF
JavaScript + DOM
Johan Holmberg
PPTX
jQuery & HTML5 Cache
Anton Tibblin
PPTX
JavaScript - Intro
Anton Tibblin
PPTX
Webbapplikationer - HTML
Anton Tibblin
PPTX
Ajax - jQuery
Anton Tibblin
PDF
VT18 - DA355A - Introduktion till JavaScript
Anton Tibblin
PPTX
Webbapplikationer - Kursintroduktion (anton.tibblin@mah.se)
Anton Tibblin
PDF
VT17 - DA355A - Intro JS
Anton Tibblin
PDF
HT17 - DA156A - Sammanfattning av kursen
Anton Tibblin
PDF
HT16 - DA156A - JavaScript 3
Anton Tibblin
PDF
HT18 - DA156A - Extra
Anton Tibblin
PDF
VT2019 - DA355A - Intro HTML & CSS
Anton Tibblin
PDF
HT18 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
HT19 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
HT17 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
VT18 - DA355A/DA344A - Introduktion till HTML
Anton Tibblin
PDF
Introduktion till CSS
Anton Tibblin
PDF
HT24 - Introduktion till webbutveckling - Introduktion till CSS
Anton Tibblin
PDF
HT16 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
VT17 - DA355A - Introduktion till CSS
Anton Tibblin
PDF
VT17 - DA355A - Introduktion HTML
Anton Tibblin
PDF
VT18 - DA355A - Introduktion till CSS
Anton Tibblin
PDF
F旦rel辰sning 1: Grundl辰ggande HTML
Johannes Karlsson
PDF
Introduktion till HTML
Anton Tibblin
PDF
HT24 - Introduktion till webbutveckling - Introduktion till HTML
Anton Tibblin
PDF
HT19 - DA156A - Introduktion till HTML
Anton Tibblin
PDF
F旦rel辰sning om HTML
Johannes Karlsson
PDF
HT17 - DA156A - Introduktion till HTML
Anton Tibblin
PDF
M旦nster och datastrukturer, del 2
Johan Holmberg
PDF
M旦nster och datastrukturer, del 1
Johan Holmberg

More Related Content

Similar to JavaScript och DOM (20)

PDF
HT17 - DA156A - Sammanfattning av kursen
Anton Tibblin
PDF
HT16 - DA156A - JavaScript 3
Anton Tibblin
PDF
HT18 - DA156A - Extra
Anton Tibblin
PDF
VT2019 - DA355A - Intro HTML & CSS
Anton Tibblin
PDF
HT18 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
HT19 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
HT17 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
VT18 - DA355A/DA344A - Introduktion till HTML
Anton Tibblin
PDF
Introduktion till CSS
Anton Tibblin
PDF
HT24 - Introduktion till webbutveckling - Introduktion till CSS
Anton Tibblin
PDF
HT16 - DA156A - Introduktion till CSS
Anton Tibblin
PDF
VT17 - DA355A - Introduktion till CSS
Anton Tibblin
PDF
VT17 - DA355A - Introduktion HTML
Anton Tibblin
PDF
VT18 - DA355A - Introduktion till CSS
Anton Tibblin
PDF
F旦rel辰sning 1: Grundl辰ggande HTML
Johannes Karlsson
PDF
Introduktion till HTML
Anton Tibblin
PDF
HT24 - Introduktion till webbutveckling - Introduktion till HTML
Anton Tibblin
PDF
HT19 - DA156A - Introduktion till HTML
Anton Tibblin
PDF
F旦rel辰sning om HTML
Johannes Karlsson
PDF
HT17 - DA156A - Introduktion till HTML
Anton Tibblin
HT17 - DA156A - Sammanfattning av kursen
Anton Tibblin
HT16 - DA156A - JavaScript 3
Anton Tibblin
HT18 - DA156A - Extra
Anton Tibblin
VT2019 - DA355A - Intro HTML & CSS
Anton Tibblin
HT18 - DA156A - Introduktion till CSS
Anton Tibblin
HT19 - DA156A - Introduktion till CSS
Anton Tibblin
HT17 - DA156A - Introduktion till CSS
Anton Tibblin
VT18 - DA355A/DA344A - Introduktion till HTML
Anton Tibblin
Introduktion till CSS
Anton Tibblin
HT24 - Introduktion till webbutveckling - Introduktion till CSS
Anton Tibblin
HT16 - DA156A - Introduktion till CSS
Anton Tibblin
VT17 - DA355A - Introduktion till CSS
Anton Tibblin
VT17 - DA355A - Introduktion HTML
Anton Tibblin
VT18 - DA355A - Introduktion till CSS
Anton Tibblin
F旦rel辰sning 1: Grundl辰ggande HTML
Johannes Karlsson
Introduktion till HTML
Anton Tibblin
HT24 - Introduktion till webbutveckling - Introduktion till HTML
Anton Tibblin
HT19 - DA156A - Introduktion till HTML
Anton Tibblin
F旦rel辰sning om HTML
Johannes Karlsson
HT17 - DA156A - Introduktion till HTML
Anton Tibblin

More from Johan Holmberg (10)

PDF
M旦nster och datastrukturer, del 2
Johan Holmberg
PDF
M旦nster och datastrukturer, del 1
Johan Holmberg
PDF
Konsistens mellan diagram och k辰llkod
Johan Holmberg
PDF
Introduktion till UML, OOAD & OOP, del 3
Johan Holmberg
PDF
Introduktion till UML, OOAD & OOP, del 2
Johan Holmberg
PDF
Introduktion till UML, OOAD & OOP, del 1
Johan Holmberg
PDF
Introduktionsf旦rel辰sning i kursen Objektorienterad programmering och modeller...
Johan Holmberg
PDF
Metodik - Versionshantering, pakethantering, paketering och testning
Johan Holmberg
PDF
Introduktion till JS
Johan Holmberg
ODP
Fil- och felhantering. Igen.
Johan Holmberg
M旦nster och datastrukturer, del 2
Johan Holmberg
M旦nster och datastrukturer, del 1
Johan Holmberg
Konsistens mellan diagram och k辰llkod
Johan Holmberg
Introduktion till UML, OOAD & OOP, del 3
Johan Holmberg
Introduktion till UML, OOAD & OOP, del 2
Johan Holmberg
Introduktion till UML, OOAD & OOP, del 1
Johan Holmberg
Introduktionsf旦rel辰sning i kursen Objektorienterad programmering och modeller...
Johan Holmberg
Metodik - Versionshantering, pakethantering, paketering och testning
Johan Holmberg
Introduktion till JS
Johan Holmberg
Fil- och felhantering. Igen.
Johan Holmberg
Ad

JavaScript och DOM

  • 1. JavaScript och DOM Det h辰r har vi gjort f旦rut Johan Holmberg 2019-04-07
  • 2. Dagens f旦rel辰sning F旦rra veckans bravader DOM H辰ndelser i JavaScript
  • 3. F旦rra veckan Vi tittade p奪 vad JavaScript 辰r och dess bakgrund Vi tittade p奪 syntaxen i JavaScript Vi l辰rde oss att arbeta med variabler, operationer och fl旦deskontroll (if, switch, loopar) Vi tittade p奪 funktioner
  • 4. Spr奪ket Javascript Ursprungligen avsett f旦r att g旦ra webbsidor roligare Bra st旦d f旦r att manipulera DOM Bra st旦d i de flesta webbl辰sare K旦rs numera lite 旦ver allt Har numera ett bra st旦d av tredjepartsbibliotek
  • 5. Spr奪ket Javascript Syntaxen liknar C, Java, etc L旦st typat inga explicita variabeltyper Multiparadigm: H辰ndelsedrivet Funktionellt Prototypbaserat (ungef辰r som objektorienterat) Imperativt
  • 6. DOM
  • 7. VanillaJS JavaScript utan ramverk
  • 8. Vad 辰r DOM? HTML DOM (Document Object Model): En representation av HTML-dokumentet som ett tr辰d av element noder. HTML-objektet kan ses som ett stort objekt
  • 9. Vad 辰r DOM? <!DOCTYPE html> <html> <head> <title>The Batcave</title> </head> <body> <p> Hello <span>there</span> Batman! <img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png"> </p> </body> </html> html head body title p span img The Batcave Hello Batman! there
  • 10. Kom 奪t element/noder Det finns fyra s辰tt att komma 奪t element i DOM-tr辰det: document.getElementById(id) ett element document.getElementByTagName(tagName) en samling av element document.getElementByClassName(className) en samling av element document.querySelector(query) ett element
  • 11. Hitta alla element av en specifik typ var elements = document.getElementByTagName("p"); Hittar alla p-element och returnerar ett objekt av typen HTMLCollection, som liknar ett array-objekt: var el = elements[0]; // F旦rsta elementet i samlingen var size = elements.length; // Antal element
  • 12. ID kontra klass i HTML Enskilda HTML-element (kan) identifieras med ett ID: Ett ID best奪r av en str辰ng ID:n 辰r unika och kan bara finnas en g奪ng per dokument Refereras till som #mitt_id Ett element kan tillh旦ra en klass: Ett klassnamn best奪r av en str辰ng Flera element kan tillh旦ra samma klass. Refereras till som .min_klass
  • 13. Exempel p奪 anv辰ndande av ID <!DOCTYPE html> <html> <head> <title>Sample Site</title> </head> <body> <p> Hello <span id="location">there</span> Batman! <img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png"> </p> <button onclick="relocate()">Change text</button> <script> function relocate() { document.getElementById("location").innerHTML = "here"; } </script> </body> </html> V奪rt ID V奪rt ID
  • 14. Exempel p奪 anv辰ndande av klass <!DOCTYPE html> <html> <head> <title>Sample Site</title> <style> li.real_deal { color: red; } </style> </head> <body> <h1>Batman's gadgets</h1> <ul> <li class="real_deal">Batarang</li> <li class="real_deal">Batmobile</li> <li class="bad_pun">Batteries</li> </ul> </body> </html> Den h辰r regeln matchar de h辰r elementen
  • 15. Exempel p奪 anv辰ndande av b奪da <!DOCTYPE html> <html> <head> <title>Sample Site</title> </head> <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li class="real_deal">Batarang</li> <li class="real_deal">Batmobile</li> <li class="bad_pun">Batteries</li> </ul> </body> </html>
  • 16. Query Selector var element = document.querySelector(".someClass"); Returnerar den f旦rsta noden av klassen someClass. Kan anv辰ndas med: Taggnamn: document.querySelector("tag"); Klassnamn: document.querySelector(".someClass"); ID: document.querySelector("#someID");
  • 17. Navigera i DOM <!DOCTYPE html> <html> <head> <title>The Batcave</title> </head> <body> <p> Hello <span>there</span> Batman! <img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png"> </p> </body> </html> html head body title p span img The Batcave Hello Batman! there
  • 18. Navigera i DOM f旦r辰ldrar och barn html head body title p span img The Batcave Hello Batman! there parentNode firstChild lastChild body.parentNode html html.firstChild head html.lastChild body html.childNodes[1] body
  • 19. Navigera i DOM syskon html head body title p span img The Batcave Hello Batman! there nextSibling previousSibling head.nextSibling body body.previousSibling head
  • 20. Modifiera en nod Vi beh旦ver k辰nna till tv奪 typer av egenskaper hos en nod: InnerHTML Den text som innesluts av ett HTML-element Kan vara HTML-kod Attribut F旦r辰ndrar ett elements beteende. Exempel: src style
  • 21. Vad 辰r vad? ... <p> Hello <span>there</span> Batman! <img src=/slideshow/javascript-och-dom/140006121/"batman_logo.png"> </p> ... p span imgHello Batman! there src span.innerHTML Attribut: img.src
  • 22. Arbeta med innerHTML <!DOCTYPE html> <html> <head> <title>Sample Site</title> </head> <body> <h1>Welcome to the Batcave!</h1> <p> Alfred is <span id="status">out</span>. </p> <script> var status = document.getElementById("status"); status.innerHTML = "in"; </script> </body> </html>
  • 23. Arbeta med attribut <!DOCTYPE html> <html> <head> <title>Sample Site</title> </head> <body> <h1>Welcome to Arkham Asylum!</h1> <h2>Inmate of the month:</h2> <img id="inmate" src=/slideshow/javascript-och-dom/140006121/"penguin.jpg"> <script> var imnate = document.getElementById("inmate"); inmate.setAttribute("src", "joker.jpg"); </script> </body> </html>
  • 24. Special: attribut-noder och CSS Attributet style (inline CSS) 辰r en attribut-nod och hanteras s奪 h辰r: ... <body> <h1>Welcome to Wayne Mansion!</h1> <p> Alfred is <span id="status" style="color: red">out</span>. </p> <script> var status = document.getElementById("status"); status.innerHTML = "in"; status.style.color = "green"; </script> </body> ...
  • 25. L辰gg till nya element till tr辰det Vi skapar nya element genom att anv辰nda oss av document.createElement("tag_name") Nya element beh旦ver ofta text. Det skapas s奪 h辰r: document.createTextNode("My text") Dessa sammanfogas sedan: var p = document.createElement("p"); var textNode = document.createTextNode("Batman"); p.appendChild(textNode);
  • 26. L辰gg in nya element till tr辰det Vi har tv奪 s辰tt att l辰gga till nya element till tr辰det element.appendChild(node) l辰gg node sist bland barnen till element element.insertBefore(node, child) l辰gg till f旦re elementet child
  • 27. Exempel p奪 appendChild() <!DOCTYPE html> <html> ... <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li id="batarang" class="real_deal">Batarang</li> <li id="batmobile" class="real_deal">Batmobile</li> <li id="batteries" class="bad_pun">Batteries</li> </ul> <script> var batcave = document.createElement("li"); var label = document.createTextNode("Bat cave"); batcave.appendChild(label); var parent = document.getElementById("gadget_list"); parent.appendChild(batcave); </script> </body> </html>
  • 28. Exempel p奪 insertBefore() <!DOCTYPE html> <html> <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li id="batarang" class="real_deal">Batarang</li> <li id="batmobile" class="real_deal">Batmobile</li> <li id="batteries" class="bad_pun">Batteries</li> </ul> <script> var batcave = document.createElement("li"); var label = document.createTextNode("Bat cave"); batcave.appendChild(label); var parent = document.getElementById("gadget_list"); var batteries = document.getElementById("batteries"); parent.insertBefore(batcave, batteries); </script> </body> </html>
  • 29. Exempel p奪 insertBefore() <!DOCTYPE html> <html> <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li id="batarang" class="real_deal">Batarang</li> <li id="batmobile" class="real_deal">Batmobile</li> <li id="batteries" class="bad_pun">Batteries</li> </ul> <script> var batcave = document.createElement("li"); var label = document.createTextNode("Bat cave"); batcave.appendChild(label); var batteries = document.getElementById("batteries"); batteries.parentNode.insertBefore(batcave, batteries); </script> </body> </html>
  • 30. Ta bort element fr奪n tr辰det Vi har tv奪 s辰tt att ta bort element fr奪n DOM-tr辰det: parent.removeChild(child) tar bort ett element parent.replaceChild(element1, element2) ers辰tter ett element
  • 31. Ta bort ett element <!DOCTYPE html> <html> ... <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li id="batarang" class="real_deal">Batarang</li> <li id="batmobile" class="real_deal">Batmobile</li> <li id="batteries" class="bad_pun">Batteries</li> </ul> <script> var parent = document.getElementById("gadget_list"); var child = document.getElementById("batmobile"); parent.removeChild(child); </script> </body> </html>
  • 32. Ta bort ett element <!DOCTYPE html> <html> ... <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li id="batarang" class="real_deal">Batarang</li> <li id="batmobile" class="real_deal">Batmobile</li> <li id="batteries" class="bad_pun">Batteries</li> </ul> <script> var child = document.getElementById("batmobile"); child.parentNode.removeChild(child); </script> </body> </html>
  • 33. Ers辰tt ett element <!DOCTYPE html> <html> <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li id="batarang" class="real_deal">Batarang</li> <li id="batmobile" class="real_deal">Batmobile</li> <li id="batteries" class="bad_pun">Batteries</li> </ul> <script> var batcave = document.createElement("li"); var label = document.createTextNode("Bat cave"); batcave.appendChild(label); var parent = document.getElementById("gadget_list"); var batteries = document.getElementById("batteries"); parent.replaceChild(batcave, batteries); </script> </body> </html>
  • 34. Ers辰tt ett element <!DOCTYPE html> <html> <body> <h1>Batman's gadgets</h1> <ul id="gadget_list"> <li id="batarang" class="real_deal">Batarang</li> <li id="batmobile" class="real_deal">Batmobile</li> <li id="batteries" class="bad_pun">Batteries</li> </ul> <script> var batcave = document.createElement("li"); var label = document.createTextNode("Bat cave"); batcave.appendChild(label); var batteries = document.getElementById("batteries"); batteries.parentNode.replaceChild(batcave, batteries); </script> </body> </html>
  • 36. Vad 辰r h辰ndelser? En h辰ndelse 辰r ett meddelande som skickas till JavaScript- motorn, och som sedan p奪verkar k旦rningen av programmet. Exempel: Anv辰ndaren klickar p奪 en knapp Ett AJAX-anrop (dvs HTTP) slutf旦rs En timeout tar slut Ett formul辰r skickas Vi kan lyssna efter dessa h辰ndelser och reagera p奪 dem!
  • 37. Vanliga h辰ndelser i JavaScript/DOM Blur n辰r ett objekt f旦rlorar fokus Click n辰r anv辰ndaren klickar p奪 ett objekt Focus n辰r ett objekt f奪r fokus Load n辰r objektet 辰r f辰rdigladdat Mouseover n辰r muspekaren sv辰var 旦ver objektet Select n辰r ett val i en drop down-meny v辰ljs Submit n辰r ett formul辰r skickas
  • 38. Reagera p奪 h辰ndelser K旦rning av JavaScript i webbl辰saren 辰r asynkron. JS- motorn har en lista av kod som den kan k旦ra. Motorn k旦r kod s奪 l辰nge den kan, en funktion i taget, och delegerar allt h奪rt arbete till webbl辰saren. N辰r webbl辰saren 辰r f辰rdig med ett uppdrag (eller f奪r en input fr奪n anv辰ndaren) l辰ggs ett uppdrag i JavaScript- motorns att g旦ra-lista.
  • 39. Metoden .addEventListener() element.addEventListener(event, function, useCapture); Parametern event 辰r en str辰ng som anger vilken h辰ndelse vi vill lyssna efter. Parametern function 辰r en funktionspekare och ber辰ttar vilken funktion som ska k旦ras n辰r h辰ndelsen intr辰ffar. Den kan vara anonym. Parametern useCapture ber辰ttar om vi vill anv辰nda event bubbling eller event capturing. verkurs, och helt frivilligt att anv辰nda. Ett element kan ha flera event listeners, 辰ven per h辰ndelse!
  • 40. Exempel med addEventListener() <!DOCTYPE html> <html> ... <body> <h1>Welcome to the Wayne Mansion intercom system!</h1> <span id="caller">Click to summon Alfred</span> <script> var caller = document.getElementById("caller"); caller.addEventListener("click", callAlfred); function callAlfred() { alert("You called, Master Wayne"); } </script> </body> </html>