javascriptweb developmentevent handling

Events and Event Handling in JavaScript

By Swann
Picture of the author
Published on
Events and Event Handling in JavaScript

Introduction

In the world of web development, interaction is key. JavaScript, being the primary scripting language for the web, offers powerful tools to handle these interactions. These tools come in the form of events and event listeners.

What is an Event?

In JavaScript, an event represents the precise moment when something happens. This "something" can be a variety of things - a user clicking a button, hovering over an element, pressing a key, or a page finishing its load.

Common DOM Events

  • Mouse Events: click, dblclick, mouseenter, mouseleave
  • Keyboard Events: keydown, keyup
  • Form Events: submit, change, focus
  • Window Events: load, resize, scroll

Event Handling

Handling events means defining a function (event handler) that will be executed when the event occurs. This function can be defined inline (though not recommended) or as a separate function.

// Inline event handler
<button onclick="alert('Button clicked!')">Click Me!</button>

// Separate function event handler
document.querySelector('button').addEventListener('click', function() {
  alert('Button clicked!');
});

Event Propagation: Bubbling and Capturing

When an event happens on an element, it first runs the handlers on it, then on its parent, then all the way up on other ancestors. This process is called “bubbling”.

However, for some events, the browser starts from the top element checking for handlers, then moves downwards. This is called “capturing”.

// Using the third argument to `addEventListener` to set the phase.
element.addEventListener('click', function() {
  alert('Event Captured!');
}, true); // The `true` makes it capturing

The Event Object

When an event occurs, the browser creates an event object, containing details about the event (like which key was pressed or which mouse button was clicked). This object is automatically passed to the handler function as its first argument.

document.querySelector('button').addEventListener('click', function(event) {
  alert(event.type); // "click"
  alert(event.currentTarget.tagName); // "BUTTON"
});

Preventing Default Behavior

Some events have a default behavior associated with them. For instance, clicking on a link navigates to its href. However, we can prevent this default behavior using the preventDefault() method on the event object.

document.querySelector('a').addEventListener('click', function(event) {
  event.preventDefault();
  alert('Link click prevented!');
});

Conclusion

Understanding events and event handling is crucial for creating interactive web applications. JavaScript provides a versatile set of tools to work with events, allowing developers to create responsive and user-friendly interfaces.


Additional Resources

Stay Tuned

Want to become a Next.js pro?
The best articles, links and news related to web development delivered once a week to your inbox.