How to Create an Element in JavaScript
Use document.createElement() when your page needs to add new UI parts dynamically without hardcoding them in the HTML. This is the standard way to create alerts, list items, cards, buttons, and modal content from JavaScript.
What you’ll build or solve
You’ll learn how to create an element in JavaScript and insert it into the DOM. You’ll also know how to add text, classes, and nested elements cleanly.
Learn JavaScript on Mimo
When this approach works best
This approach is the right choice when content depends on user actions, fetched data, or repeated templates.
Common real-world scenarios include:
- Todo items
- Notification banners
- Dynamic cards
- Search results
- Chat messages
This is a bad idea when the content is static and never changes. In that case, write it directly in HTML.
Prerequisites
You only need:
- A basic HTML page
- A JavaScript file or
<script>tag - Basic DOM selection knowledge
Step-by-step instructions
Step 1: Create the element, configure it, and append it
Start by creating the new element.
HTML
<div class="list"></div>
<script>
const item = document.createElement("p");
item.textContent = "New task added";
</script>
Then add classes or attributes if needed.
JavaScript
item.classList.add("task-item");
Finally, append it into an existing parent.
JavaScript
const list = document.querySelector(".list");
list.appendChild(item);
What to look for:
createElement()only creates the node- The element does not appear until appended
- Use
textContentfor safe text - Add classes before appending when possible
- Great for repeated dynamic UI blocks
Examples you can copy
Add list item
JavaScript
const li = document.createElement("li");
li.textContent = "Buy milk";
document.querySelector("ul").appendChild(li);
Add alert banner
JavaScript
const banner = document.createElement("div");
banner.textContent = "Saved successfully";
banner.classList.add("alert");
Add button
JavaScript
const button = document.createElement("button");
button.textContent = "Load more";
Common mistakes and how to fix them
Mistake 1: Forgetting to append the element
What the reader might do:
JavaScript
const card = document.createElement("div");
card.textContent = "New card";
Why it breaks: the element exists in memory but is never added to the page.
Corrected approach:
JavaScript
document.body.appendChild(card);
Mistake 2: Using innerHTML for simple text
What the reader might do:
JavaScript
item.innerHTML = "Task added";
Why it breaks: it works, but textContent is safer and clearer for plain text.
Corrected approach:
JavaScript
item.textContent = "Task added";
Mistake 3: Appending to the wrong parent
What the reader might do:
JavaScript
document.body.appendChild(li);
Why it breaks: the new element may appear in the wrong place.
Corrected approach:
JavaScript
document.querySelector("ul").appendChild(li);
Troubleshooting
If the element never appears, confirm it was appended.
If it appears in the wrong place, verify the parent selector.
If text rendering feels unsafe, use textContent.
If many repeated elements are added, create them in a loop or helper function.
Quick recap
- Use
document.createElement() - Add text, classes, and attributes
- Append to a parent with
appendChild() - Use
textContentfor plain text - Great for dynamic UI rendering
Join 35M+ people learning for free on Mimo
4.8 out of 5 across 1M+ reviews
Check us out on Apple AppStore, Google Play Store, and Trustpilot