<!doctype html>
<html>
<head>
<title>My home page</title>
</head>
<body>
<h1>My home page</h1>
<p>Hello, I am Marijn and this is my home page.</p>
<p>I also wrote a book! Read it
<a href="http://eloquentjavascript.net">here</a>.</p>
</body>
</html>
For each box, there is an object, which we can interact with to find out things such as what HTML tag it represents and which boxes and text it contains. This representation is called the Document Object Model, or DOM for short.
Tänka i TRÄD
Dessa är NODER
Tre typer av noder
Oftast hämtar vi ut Element nodes med JavaScript och modifierar dessa.
$('#menu-toggle');
jQuery ger oss en wrapper runt samtliga element selectors
NodeList / HTMLCollection
Det vi får tillbaka är nästan alltid en samling av element som är "Array-like" men inte en faktisk array.
Detta betyder att vi kan loopa igenom element.
Denna samling är nästan alltid Live
<nav id="main-nav">
<a href="home.html" class="nav-link">Home</a>
<a href="about.html" class="nav-link">About</a>
</div>
const nav = document.getElementById('main-nav'); // Always one
const links = document.getElementsByClassName('nav-link') //Always multiple;
const links = document.getElementByTagName('a'); //Always multiple
querySelector()
Det närmaste vi kommer jQuery
const nav = document.querySelector('#main-nav');
const links = document.querySelectorAll('.nav-link');
const links = document.querySelectorAll('#main-nav a');
När vi fått tag i elementen måste vi kunna manipulera
<div id="output"></div>
const output = document.getElementById('output');
output.textContent = "Hello FED17";
output.innerText = "Hello FED17, I am the same as above";
output.innerHTML = "<p>text AND html, dangerous 😅<p>";
På samma sätt kan vi skriva ut varje värde
Hello!
const output = document.getElementById('output');
console.log(output.textContent);
console.log(output.innerText);
console.log(output.innerHTML);
Allting som finns i HTML samt CSS kan manipuleras via JavaScript
const byId = document.getElementById('byId');
byId.style.backgroundColor = 'lightsalmon';
byId.style.color = 'teal';
byId.style.fontFamily = 'Comic Sans MS';
byId.textContent = 'Comic Sans YO';
const classes = document.getElementsByClassName('byClass');
for (const oneClass of classes){
oneClass.style.color = 'red';
}
classes[0].style.color = 'green';
Skapa element och lägg till i DOMen
const div = document.createElement('div');
document.body.appendChild(div);
const p = document.createElement('p');
const text = document.createTextNode('My text!');
p.appendChild(text);
document.body.appendChild(p);
parentElement
children
nextSibling
previousSibling
firstElementChild
lastElementChild
Eftermiddag: övningar på zenit / GitHub