4.9/5 (6329 ratings)
Everything you need, structured and ready to go.
Project Walkthrough and Install
Understanding DOM Loading Events
DOM Nodes Explained
Creating DOM Nodes
Changing Content of DOM Elements
innerHTML versus createElement
Inserting DOM Elements
Inserting DOM as String Templates
Replacing DOM Elements
Cloning DOM Elements
Removing DOM Elements
Querying DOM Nodes (HTMLCollections)
Querying DOM Nodes (NodeLists)
Looping over DOM Elements
Finding Child Elements
Finding Parent Elements
Finding Sibling Elements
Element Properties versus HTML Attributes
Setting and Getting HTML Attributes
Setting and Getting Inline Styles
Setting and Getting Classes
Adding Event Listeners and Event Object
Removing Event Listeners
Event Bubbling, Capturing and Propagation
Preventing Default Event Actions
Event Delegation and Dynamic Events
Accessing Forms and Elements
Form Submit Event and FormData
Transforming FormData for the Server
Posting FormData via Fetch API
Handling Input Elements
Handling Radio Input Elements
Handling Checkbox Input Elements
Handling Select Elements
Project Setup and Install
Structuring our HTML Template
State Initialization and Submit Events
Rendering State with Template Literals
Updating State via Event Delegation
Deleting Items from State
Toggling UI State and Filtering Collections
Persisting State to LocalStorage
Dynamic DOM Injection and Editing
Built by Google Developer Experts, there's no better place to learn.
Design patterns, battle-tested techniques, architecture and performance.
Learn at home at your own pace, download for offline viewing.
Nail that interview or promotion with skills that will set you apart.
Access full source code, and experiment live in the browser.
Exclusive access to our members-only community (7,000+ members).
If you're disappointed for whatever reason, you'll get a full refund (but I'm sure you won't need it).
Not-so-good exchange rate? (i.e. India/Brazil). Student?
Email us for a coupon for your country or student ID.
A newer version of this site just became available. Please refresh this page to activate it.