References

Beginner-friendly references for web development, with live, editable examples.

The HTML onclick event

Event All modern browsers Updated
Quick answer

The HTML onclick attribute runs JavaScript when the user clicks (presses and releases the primary button on) the element. It is an inline handler for the click event; in modern code prefer addEventListener('click', …).

Overview

The onclick event attribute runs JavaScript when the element is clicked. In JavaScript the event itself is named click — drop the on prefix when you call addEventListener.

It is one of the mouse events. Its handler receives a MouseEvent with details such as the pointer coordinates (clientX/clientY), which button was used, and which modifier keys were held. For input that also covers touch and pen with one code path, the modern pointer events are the recommended replacement.

You can wire this up with the inline onclick HTML attribute, but the modern, recommended approach is element.addEventListener('click', handler) in JavaScript. That keeps behavior out of your markup, lets you attach several handlers to the same event, and makes them easy to remove. The inline attribute is fine for quick demos.

Syntax

<element onclick="handler()">…</element>

element.addEventListener('click', handler);

Example

Live example
<button onclick="this.textContent = 'Clicked!'">Click me</button>

Best practices

  • Prefer element.addEventListener('click', handler) over the inline onclick attribute — it separates behavior from markup and allows multiple handlers.
  • Build interactivity on real <button> or link elements so it also works with the keyboard — not on mouse events alone.
  • Consider the unified pointer events to handle mouse, touch and pen together.
  • Read coordinates and the pressed button from the MouseEvent the handler receives.

Accessibility

Put click behavior on natively interactive elements (<button>, <a>). They are keyboard-operable and announced correctly. A click handler on a plain <div> is invisible to keyboard and screen-reader users unless you also add a role, tabindex and key handlers.

Frequently asked questions

What is the onclick event?
It runs JavaScript when the element is clicked. In JavaScript the event is named click.
Does this event work on touch screens?
Mouse events have limited support on touch devices. For input that works across mouse, touch and pen, use the pointer events instead.
How do I get the mouse position?
Read event.clientX and event.clientY (viewport-relative) from the MouseEvent passed to the handler.
Should I use the onclick attribute or addEventListener?
Prefer addEventListener('click', …) in JavaScript. The inline onclick attribute works but mixes behavior into the markup and allows only one handler per element.