Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
80 views

Document Object Model: Softuni Team

Uploaded by

Mariyan Tsvetkov
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views

Document Object Model: Softuni Team

Uploaded by

Mariyan Tsvetkov
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 47

DOM

Document Object Model

SoftUni Team
Technical Trainers
Software University
https://softuni.bg
Table of Contents

1. DOM
 What is DOM?
 DOM Methods
 DOM Manipulations
 Parents and Children Elements
 DOM Properties and HTML Attributes
 DOM Events Introduction
2. BOM
2
Have a Question?

sli.do
#js-advanced
3
Document with a Logical Tree
Document Object Model (DOM)
Document Object Model
 The DOM represents the document as nodes and objects
 That way, the programming languages can connect to the page
 DOM is a standard of how to:
 Get HTML element
 Change HTML element
 Add HTML element
 Delete HTML element

5
HTML DOM
 The HTML DOM is an Object Model for HTML. It defines:
 HTML elements as objects
 Properties 
 Methods 
 Events

6
Changing the HTML
DOM Methods
DOM Methods
 DOM Methods - actions you can perform on HTML
elements
 DOM Properties - values of HTML elements that you can
set or change

8
Example: DOM Methods
 HTML DOM method is an action you can do (like add or delete
an HTML element)

9
Example: DOM Methods
 HTML DOM property is a value that you can get or set
(changing the content of an HTML element)

10
Modify the DOM Tree
DOM Manipulations
Selection of Elements
 There are a few ways to find a certain HTML element in
the DOM:
 By id - getElementById()
 By tag name - getElementsByTagName()
 By class name - getElementsByClassName()
 By CSS selector - querySelector()

12
CSS Selectors
 CSS selectors are strings that follow CSS syntax for matching
 They allow very fast and powerful element matching, e.g.:
 "#main" - returns the element with ID "main"
 "#content div" - selects all <div>s inside #content
 ".note, .alert" - all elements with class "note" or "alert"
 "input[name='login']" - <input> with name "login"

13
DOM Manipulations
 The HTML DOM allows JavaScript to change the
content of HTML elements
 innerHTML
 attributes
 setAttribute()
 style.property

14
DOM Manipulations
 We can create, append and remove HTML elements
dynamically
 removeChild()
 appendChild()
 replaceChild()
 document.write()

15
Creating DOM Elements
 Creating a new DOM element
let p = document.createElement("p"); Tag name
let li = document.createElement("li");

 Create a copy / cloning DOM element


let li = document.getElementById("my-list");
let newLi = li.cloneNode(true);

 The above code creates a new elements. But these elements don't
exist anywhere except as values inside variables
16
Deleting DOM Elements
<div id="div1">
    <p id="p1">This is a paragraph.</p>
    <p id="p2">This is another paragraph.</p>
</div>

let parent = document.getElementById("div1");
let firstChild = document.getElementById("p1");
let secondChild = document.getElementById("p2");
Directly deleting
firstChild.remove();
parent.removeChild(secondChild);
Deleting by parent element

17
Creating DOM Elements

let list = document.createElement("ul");
let firstLi = document.createElement("li");
firstLi.textContent = "Peter";
list.appendChild(firstLi);
let secondLi = document.createElement("li");
secondLi.innerHTML = "<b>Maria</b>";
list.appendChild(secondLi);
document.body.appendChild(list);

18
Problem: 1. Article List
 You are given the resources and full description of the
problem into the Lab.

19
Solution: 1. Article List
function createArticle() {
const input = document.getElementById('createTitle') // getting elements form DOM
const textArea = document.getElementById('createContent')
const articles = document.getElementById('articles')
const article = document.createElement('article'); // creating new elements
const h3 = document.createElement('h3');
const p = document.createElement('p');
if(input.value !== '' && textArea.value !== '') {
h3.innerHTML = input.value;
p.innerHTML = textArea.value;
// TODO… append the elements;
} // clear the inputs;
}
20
DOM Properties and HTML Attributes
Properties vs. Attributes
 Attributes are defined by HTML. Properties are
defined by the DOM
 Attributes initialize DOM properties
 Property values can change
 Attribute values can't
 The HTML attribute and the DOM property are not
the same thing, even when they have the same
name
22
DOM Properties
 textContent - reads and writes text
let text = Node.textContent;
Node.textContent = 'New text for element.';

 innerHTML - returns and writes the HTML of a given element


let html = myElement.innerHTML;
myElement.innerHTML = 'New text for element.';

 value - gets and sets value


let theValue = theFormField.value;
theFormField.value = 'New value';
23
HTML Attributes and Methods
 getAttribute() - returns the value of attributes of
specified HTML element
<input type="text" name="username"/>
<input type="password" name="password"/>

const inputEle = document.getElementByTagName('input')[0];
inputEle.getAttribute('type'); // text
inputEle.getAttribute('name'); // username

24
HTML Attributes and Methods
 setAttribute() - sets the value of an attribute on the
specified HTML element
<input type="text" name="username"/>
<input type="password" />

const inputPassEle = document.getElementsByTagName('input')[1];
inputPassEle.setAttribute('name', 'password'); 

<input type="text" name="username"/>
<input type="password" name="password"/>

25
HTML Attributes and Methods
 removeAttribute() - removes the attribute with the
specified name from an HTML element
<input type="text" name="username" placeholder="Username..."/>
<input type="password" name="password" placeholder="Password..."/>

const inputPassEle = document.getElementsByTagName('input')[1];
inputPassEle.removeAttribute('placeholder');

<input type="text" name="username" placeholder="Username..."/>
<input type="password" name="password"/>

26
HTML Attributes and Methods
 hasAttribute() -  method returns true if the specified
attribute exists, otherwise it returns false
<input type="text" name="username" placeholder="Username..."/>
<input type="password" name="password" id="password"/>

const passwordElement = document.getElementById(password');
passwordElement.hasAttribute('name'); // true 
passwordElement.hasAttribute('placeholder'); // false

27
HTML Attributes and Methods
 classList - is a read-only property that returns a collection of
the class attributes of specified element

<div class="container div root"></div>

const element = document.getElementById('myDiv').classList;
// DOMTokenList(3)
["container", "div", "root", value: "container div root"] 

28
HTML Attributes and Methods
 classList Methods
<div class="container div root"></div>

 add() - Adds the specified class values


document.getElementById('myDiv').classList.add('testClass');

 remove() - Removes the specified class values


document.getElementById('myDiv').classList.remove('container');

<div class="div root testClass"></div>

29
Problem: 3. Growing Word

Initial values

30
Solution: 3. Growing Word
function growingWord() {
const word = document.querySelector("#exercise > p");
let px = 2;
let colorChanges = {
"blue": "green",
"green": "red",
"red": "blue"
};
if (!word.hasAttribute("style")) {
word.setAttribute("style", `color:blue; font-size: ${px}px`);
} else {
let currentPx = word.style["font-size"];
px = currentPx.substr(0, currentPx.length - 2) * 2;
let currentColor = word.style.color;
word.setAttribute("style",
`color:${colorChanges[currentColor]}; font-size: ${px}px`)
}
}

31
Parents and Child Elements
Parents and Child Elements
 Every DOM Elements has a parent
 Parents can be accessed by keywords .parent or
.parentNode

Accessing the
first child

let firstP = document.getElementsByTagName('p')[0];
console.log(firstP.parentElement);
Accessing the
child parent

33
Parents and Child Elements
 When some element contains other elements, that means he is
parent of this elements
 Also this elements is children to the parent. They can be
accessed by keyword .children

let pElements = document.getElementsByTagName('div')[0].children;
Returns HTML
Collection 34
Parents and Child Elements
 firstElementChild - Returns the first child node of an element
 lastElementChild - Returns the last child node of an element

let list = document.getElementById('myList');

list.firstElementChild;
list.lastElementChild;

list.firstElementChild.textContent += " RLZ!";

35
Parents and Child Elements
 nextElementSibling - Returns the next node at the same
node tree level
 previousElementSibling - Returns the previous node at
the same node tree level
let ul = document.getElementById('myList');
let next = ul.children[0].nextElementSibling;
console.log(next.textContent); // C#
let prev = next.previousElementSibling;
console.log(prev.textContent); // JS

36
Parents and Child Elements
 appendChild - Adds a new child, as the last child
let p = document.createElement("p");
let li = document.createElement("li");
li.appendChild(p);

 prepend - Adds a new child, as the first child


let ul = document.getElementById("my-list");
let li = document.createElement("li");
ul.prepend(li);

37
NodeList vs. HTMLCollection
 Both interfaces are collections of DOM nodes
 NodeList can contain any node type
 HTMLCollection is supposed to only contain Element
nodes
 An HTMLCollection provides the same methods as a
NodeList and additionally a method called
namedItem

38
Handling DOM Events
DOM Events
DOM Events
 Events are actions or occurrences
 They allow JavaScript to register different event
handlers on elements
 Events are normally used in combination with
functions
 The function will not be executed before the event
occurs
htmlRef.addEventListener( 'click' , handler );

40
BOM

The Built-In Browser Objects


Browser Object Model (BOM)
Browser Object Model (BOM)
 Browsers expose some objects like window, screen,
navigator, history, location, document, …

console.dir(window);
console.dir(navigator);
console.dir(screen);
console.dir(location);
console.dir(history);
console.dir(document);

42
Playing with BOM
alert(window.navigator.userAgent);

console.log(navigator.language);
// en-US

console.log(screen.width + " x " + screen.height);
// 1920 x 1080

document.location = "https://softuni.bg";

history.back();
43
Summary

 DOM
 …
 DOM is a programming API for HTML and
 …
XML documents
 DOM
… Methods and Properties
 DOM Manipulations
 BOM

44
Questions?

© SoftUni – https://softuni.bg Copyrighted document. Unauthorized copy, reproduction or use is not permitted.
Trainings @ Software University (SoftUni)
 Software University – High-Quality Education,
Profession and Job for Software Developers
 softuni.bg
 Software University Foundation
 softuni.foundation
 Software University @ Facebook
 facebook.com/SoftwareUniversity
 Software University Forums
 forum.softuni.bg
 4
License

 This course (slides, examples, demos, exercises, homework,


documents, videos and other assets) is copyrighted content
 Unauthorized copy, reproduction or use is illegal
 © SoftUni – https://about.softuni.bg/
 © Software University – https://softuni.bg

47

You might also like