Hello! Are you ready to unravel JavaScript events? In today's lesson, we will focus on understanding events and how JavaScript incorporates them into an HTML page. We'll delve into events, how they generate action, and event handlers. Let's get started!
Before we jump further into the lesson, let's delve into the HTML <button>
tag and how it interacts with the onClick
attribute.
The <button>
tag in an HTML document creates a clickable button that performs a specified action when a user clicks on it. Imagine it as a doorbell to a house - when pressed, it triggers a response.
The onClick
attribute, on the other hand, is an event attribute. It is used within HTML tags to call a JavaScript function when an onclick
event (the button click in our case) occurs.
Let's see an example of how to use these two together:
HTML, XML1<button onClick="alert('You clicked me!')">Click me!</button>
In this code, we have a button that says "Click me!". When you click this button, an alert box with the message "You clicked me!" will pop up on your screen. This response is triggered because of the onClick
attribute in the button tag that activates the JavaScript function alert('You clicked me!')
.
In the world of JavaScript, events are the actions or occurrences that take place in the browser which you can respond to with JavaScript - be it something that the browser does, or something a user does.
Think of events as messages being sent when something happens. An event could be anything from a click event fired when a user clicks on an HTML element, to a page load event fired by the browser when it finishes loading a web page, to an input event triggered when the user writes something into an input field.
Why are events important? They allow us to make our web pages interactive. Instead of just presenting static information, we can create pages that respond to user actions, which results in a much more engaging user experience.
Within JavaScript, events are categorized into two types - user-triggered and browser-triggered. For instance, a mouse click triggers a 'click' event. Similarly, a page finish loading sparks a 'load' event. Essentially, every interaction between the user and the webpage could be viewed as a potential JavaScript event.
To respond to a user's interaction, JavaScript provides a variety of event types like 'click', 'mouseover', 'keyup', etc. These events can be associated with specific HTML elements like buttons, inputs and divs to trigger JavaScript code when the event occurs.
There are also some events triggered by the browser. For example, the 'load' event is triggered after the webpage has completely loaded all content including images, stylesheets, scripts, etc. This event is often used to execute JavaScript code which needs the entire DOM to be available.
Event Handlers activate a specific action when an event occurs. They can be created three ways:
- Inline Event Handlers: Event handlers can be annotated directly within the HTML elements. Check out the example below:
HTML, XML1<button onClick="alert('Hello there!')">Click Me!</button>
Clicking the button triggers an alert, "Hello there!".
- As DOM Object Properties: Event handlers can also use properties of the HTML DOM object.
HTML, XML1<script> 2 function sayHello() { 3 alert('Hello there!'); 4 } 5 document.getElementById('my_button').onclick = sayHello; 6</script> 7 8<button id="my_button">Click me!</button>
In this script, the event handler is associated with the onclick
DOM property of the button element.
- Using addEventListener() Method: Event handlers can also be assigned using the
addEventListener
method of the DOM element.
Let's delve into one of the most powerful arrowheads in our quiver for handling events in JavaScript - the addEventListener()
method. This method allows us to designate certain functionalities when an event occurs.
Here's the structure of the addEventListener()
method:
target.addEventListener(type, listener);
target
is the HTML element we're attaching the event listener to.type
is a string specifying the type (or name) of the event.listener
is the function to execute when the event occurs.
For instance, we have a button that prompts an alert when clicked. An addEventListener()
method for such a scenario would look like this:
JavaScript1document.getElementById("my_button").addEventListener("click", function() { 2 alert("Button clicked!"); 3});
Here, document.getElementById("my_button")
is our target, "click"
is our event type, and the function that follows is our event listener. The complete construct designates that when we click on the button (our target), the webpage should alert "Button clicked!".
Another example of using the addEventListener
method:
JavaScript1<script> 2 function sayHello() { 3 alert('Hello there!'); 4 } 5 document.getElementById('my_button').addEventListener('click', sayHello); 6</script> 7 8<button id="my_button">Click me!</button>
In this script, the addEventListener
method adds an event listener to the button that listens for 'click' events and responds by executing the 'sayHello' function.
JavaScript functions serve as 'Event Handlers' -- they handle or respond to an event when it occurs. For each event, JavaScript creates an "Event Object" with information about the event. We can access this object within an event handler.
JavaScript1// Event handler capturing the clicked element’s id 2document.getElementById("my_button").addEventListener("click", function(event) { 3 alert("You clicked on: " + event.target.id); 4});
The event
variable is an event object. It has a target
attribute that gives us the HTML element, then we can use .id
to inspect the HTML ID of the element, so event.target.id
represents the id of the element that triggered the event.
Great work! Today we explored JavaScript events, understanding user-triggered and browser-triggered events, and gained knowledge about event handlers. Additionally, we delved into the versatile Event Object. Now we move onto some practice with handling events in HTML using JavaScript. Let's go!