Skip to main content

Javascript DOM

DOM stands for Document Object Model. Everything on the website is an object and can be manipulated using the DOM.

Getters and Setters​

There are getter and setter properties / methods.

Properties​

h1.color; //gets color of the h1 in question
h1.color = red; //sets color of the h1 in question

Methods​

Some examples of methods include click();, appendChild();, and setAttribute();

h1.click(); //runs the "click" method of h1

Getting Objects on Webpage​

Common ways include the below. Most often you'll see people use .querySelector() and .querySelectorAll() in websites.

// get h1 elements.
// you could put in ID's, classes, elements, etc
document.querySelector("h1");

// class example
document.querySelector(".className");

// id example
document.querySelector("#idName");

// you can also combine selectors like in css
document.querySelector("li a"); // gets "a" tag inside a list item

// gets h1 element inner HTML (text)
document.querySelector("h1").innterHTML;

// gets an array of all items in the HTML that match your query
// the same rules as above apply
document.querySelectorAll("");

// gets element by its elements
// this gets ALL elements of that type (in an array)
// instead of just 1 like the querySelector method
document.getElementsByTagName("");

// changes third list item color to purple
document.getElementsByTagName("li")[2].style.color = "purple";

// gets array of elements with the chosen class name
document.getElementsByClassName("");

// get back the single item that has this ID. NOT an array
document.getElementById("");

CSS styles in JS DOM​

Everything is camelCase, so instead of background-color like in CSS, for JS DOM we use backgroundColor. Values are always represented as strings, held within quotes like "10rem";

HTML DOM style object​

The Style object represents an individual style statement. Documentation here.

CSS Class Manipulation​

This is probably the best way to make CSS changes using javascript. You can alter object classes, adding or removing them using JS.

// add class
classList.add("classToAdd");

// remove class
classList.remove("classToRemove");

// adds if it doesn't exist, removes if it does exist
classList.toggle("classToToggle");

Examples:

// this would add a class called "invisible" to anything that is a "button"
document.querySelector("button").classList.add("invisible");

// this would remove the class "invisible" from anything that is a "button"
document.querySelector("button").classList.remove("invisible");

textContent vs innerHTML​

textContent only gives you the text within a thing.

innerHTML takes literally everything within the HTML. This allows you to do things like:

// adds emphasis too
document.querySelector("h1").innerHTML = "<em>Good Bye</em>";

Changing attributes within JS​

Use can use the .attributes or getAttribute("attribName") to get attributes.

// Getting array of attributes
// gives you an array of all attributes of the "a"
document.querySelector("a").attributes;

// Getting single attribute
// gives you the value of the "href" attribute of the "a"
document.querySelector("a").getAttribute("href");

// Setting single attribute
document.querySelector("a").setAttribute("href", "https://www.bing.com");

Event Listeners​

Add an event listener to set a function to be called whenever the specified event happens.

How events work: MDN addEventListener.

List of events: MDN Events.

// here "handleClick" is a function to call when the "click" event happens
document.querySelector("button").addEventListener("click", handleClick);

// commonly these are done using anonymous functions
document.querySelector("button").addEventListener("click", function () {
alert("I got clicked");
// whatever else you want the function to do
});

Adding event listeners to multiple elements: Flaviscopes Post.