Create an element with onClick event listener using JS

avatar

Borislav Hadzhiev

Fri Jan 07 20222 min read

banner

Photo by Chris Leggat

Create an element with onClick event listener using JS #

To create an element with an onClick event listener:

  1. Use the document.createElement() method to create the element.
  2. Use the addEventListener() method to add a click event listener to the element.
  3. Add the element to the page using the appendChild() method.

Here is the HTML for the examples in this article.

index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> </head> <body> <div id="box"></div> <script src="index.js"></script> </body> </html>

And here is the related JavaScript code.

index.js
// โœ… Create element const el = document.createElement('div'); el.addEventListener('click', function handleClick(event) { console.log('element clicked ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰', event); }); // โœ… Add text content to element el.textContent = 'Hello world'; // โœ… Or set the innerHTML of the element // el.innerHTML = `<span>Hello world</span>`; el.style.backgroundColor = 'salmon'; el.style.width = '150px'; el.style.height = '150px'; // โœ… add element to DOM const box = document.getElementById('box'); box.appendChild(el);

We used the document.createElement method to create the element.

The only parameter we passed to the method is the type of element to be created (div in the example).

The createElement method returns the newly created element.

We called the addEventListener method on the element, passing it the following 2 parameters:

  1. The event type to listen for (click in the example).
  2. A function that gets invoked when the event is triggered.
Every time the element is clicked, the handleClick function is invoked.

You can use the textContent property to set the element's text content or the innerHTML property to set the element's inner HTML markup.

You shouldn't use the innerHTML property with user provided data without escaping it. This would leave your application open to cross-site scripting attacks.

You can use the appendChild method to add the element to the page.

The method adds a node to the end of the list of children of the element it was called on.

If I load the page from the example and click on the element, I can see that the message is logged to my browser's console.

click event triggered successfully

Join my newsletter

I'll send you 1 email a week with links to all of the articles I've written that week

Buy Me A Coffee