Understanding Events

Modern JavaScript Manipulating HTML Pages
8 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$99.99
List Price:  $139.99
You save:  $40
€93.70
List Price:  €131.19
You save:  €37.48
£80.17
List Price:  £112.24
You save:  £32.07
CA$137.56
List Price:  CA$192.60
You save:  CA$55.03
A$155.17
List Price:  A$217.25
You save:  A$62.07
S$135.98
List Price:  S$190.37
You save:  S$54.39
HK$783.01
List Price:  HK$1,096.25
You save:  HK$313.23
CHF 90.89
List Price:  CHF 127.26
You save:  CHF 36.36
NOK kr1,101.16
List Price:  NOK kr1,541.68
You save:  NOK kr440.51
DKK kr699.21
List Price:  DKK kr978.92
You save:  DKK kr279.71
NZ$168.70
List Price:  NZ$236.19
You save:  NZ$67.48
د.إ367.21
List Price:  د.إ514.11
You save:  د.إ146.90
৳10,942.52
List Price:  ৳15,319.96
You save:  ৳4,377.44
₹8,353.31
List Price:  ₹11,694.97
You save:  ₹3,341.66
RM478.30
List Price:  RM669.64
You save:  RM191.34
₦129,687.03
List Price:  ₦181,567.03
You save:  ₦51,880
₨27,754.24
List Price:  ₨38,857.05
You save:  ₨11,102.81
฿3,676.55
List Price:  ฿5,147.32
You save:  ฿1,470.77
₺3,250.48
List Price:  ₺4,550.80
You save:  ₺1,300.32
B$523.28
List Price:  B$732.62
You save:  B$209.33
R1,903.66
List Price:  R2,665.20
You save:  R761.54
Лв183.15
List Price:  Лв256.41
You save:  Лв73.26
₩137,464.20
List Price:  ₩192,455.38
You save:  ₩54,991.18
₪378.95
List Price:  ₪530.55
You save:  ₪151.59
₱5,720.89
List Price:  ₱8,009.48
You save:  ₱2,288.58
¥15,440.72
List Price:  ¥21,617.62
You save:  ¥6,176.90
MX$1,696.11
List Price:  MX$2,374.63
You save:  MX$678.51
QR363.78
List Price:  QR509.31
You save:  QR145.52
P1,378.02
List Price:  P1,929.29
You save:  P551.26
KSh13,298.67
List Price:  KSh18,618.67
You save:  KSh5,320
E£4,850.08
List Price:  E£6,790.31
You save:  E£1,940.22
ብር5,673.01
List Price:  ብር7,942.45
You save:  ብር2,269.43
Kz83,741.62
List Price:  Kz117,241.62
You save:  Kz33,500
CLP$97,883.21
List Price:  CLP$137,040.41
You save:  CLP$39,157.20
CN¥723.83
List Price:  CN¥1,013.40
You save:  CN¥289.56
RD$5,893.56
List Price:  RD$8,251.22
You save:  RD$2,357.66
DA13,447.21
List Price:  DA18,826.63
You save:  DA5,379.42
FJ$227.04
List Price:  FJ$317.87
You save:  FJ$90.82
Q775.43
List Price:  Q1,085.64
You save:  Q310.20
GY$20,874.74
List Price:  GY$29,225.48
You save:  GY$8,350.73
ISK kr14,084.59
List Price:  ISK kr19,718.99
You save:  ISK kr5,634.40
DH1,011.98
List Price:  DH1,416.82
You save:  DH404.83
L1,789.85
List Price:  L2,505.87
You save:  L716.01
ден5,767.34
List Price:  ден8,074.51
You save:  ден2,307.16
MOP$804.17
List Price:  MOP$1,125.87
You save:  MOP$321.70
N$1,897.84
List Price:  N$2,657.05
You save:  N$759.21
C$3,669.73
List Price:  C$5,137.77
You save:  C$1,468.04
रु13,346.58
List Price:  रु18,685.75
You save:  रु5,339.16
S/375.13
List Price:  S/525.19
You save:  S/150.06
K378.96
List Price:  K530.57
You save:  K151.60
SAR375.09
List Price:  SAR525.14
You save:  SAR150.05
ZK2,519.95
List Price:  ZK3,528.03
You save:  ZK1,008.08
L466.17
List Price:  L652.66
You save:  L186.48
Kč2,369.01
List Price:  Kč3,316.71
You save:  Kč947.70
Ft36,915.02
List Price:  Ft51,682.51
You save:  Ft14,767.48
SEK kr1,089.22
List Price:  SEK kr1,524.96
You save:  SEK kr435.73
ARS$86,913.85
List Price:  ARS$121,682.87
You save:  ARS$34,769.02
Bs690.45
List Price:  Bs966.66
You save:  Bs276.20
COP$391,130.80
List Price:  COP$547,598.77
You save:  COP$156,467.96
₡49,957.95
List Price:  ₡69,943.14
You save:  ₡19,985.18
L2,461.44
List Price:  L3,446.12
You save:  L984.67
₲737,867.79
List Price:  ₲1,033,044.43
You save:  ₲295,176.63
$U3,889.78
List Price:  $U5,445.86
You save:  $U1,556.07
zł405.87
List Price:  zł568.23
You save:  zł162.36
Already have an account? Log In

Transcript

Events are an exciting part to get into JavaScript up to this point, our JavaScript has been executing whenever the HTML page loaded and then the JavaScript file that was attached to it loaded or we would enter something in the console and press return and then it would execute. Well, that's a little bit limiting. Events allow us to execute JavaScript based upon things that the user does. So we can respond to the user as they interact with the web page. So let's take a look at events. Now first off, events are happening all the time on a web page.

For example, when the the mouse cursor hovers over something that's an event when you click something that's an event when you scroll, when you press a key on the keyboard when an image loads online, Have these are events. And so they're happening constantly on a web page, we can choose to respond to them if we want to, meaning have some code execute when that event occurs, or we can choose not to respond to any of them. The way we respond to an event is by creating an event handler. When we set up an event handler, we specify what event we want to respond to. And we specify what JavaScript code we want to execute. So there's a two step process to handle events.

One is you first need to select the node from the DOM. So you need to find that element that you're going to listen for events on. Second you attach what's called an event listener. Now, event listener simply is attached to that node and then it lists For the event, which you indicate, and when that event occurs, then it goes ahead and executes the code, which you also indicate. So two step process, get the node you're attaching the event listener to, and then attach the event listener. Now you can attach more than one listener to a node.

That's very important because if you attach one listener at a certain point in your code, and then later, attach another listener, it doesn't override the first listener. And finally, parent nodes can listen to child node events. So if you attach a listener to a parent, it could be triggered by an event that happens on a child. So the events bubble up. If you think of the DOM as a hierarchy, then events that occur on lower nodes bubble up to the higher nodes. That can be a very powerful concept.

For how you implement your event handlers. Alright, let's look at the actual code that is used to define an event handler. So first off, I said you need to select the node. So we've been doing this a lot already. So in this statement, declared a variable called a button, and then use document query selector and then searched for an element on HTML page that has an ID of button ID. So there I have the node selected, then I can go ahead and attach an event listener to that node.

So I do that with the Add event listener, function button dot add event listener, and then it takes two parameters. The first parameter is the event that I want to respond to. Now as I said, there are numerous events, one of which is click that simply clicking the mouse button. But there are a bunch of other events that we could use. Then we have a comma, then we have the second part of the Add event listener, which is, in this case, an anonymous function, I've declared a function. And inside the curly braces, I enter the code that I want to execute.

Now, if we had declared the function earlier, I could simply enter the reference to the function here, instead of defining an anonymous function, situations where I might do that is if I had some code that I want to execute from more than one event listener, or I wanted to execute somewhere else in my code. And so instead of repeating that same code with each event listener, I would define the function and then I would Just reference it in the event listener. But if I don't need to do that, usually I will use an anonymous function to define the code that needs to execute. Now this is the most common way to create an event handler is by using the Add event listener function. However, there is another way that you may encounter and that's by attaching code to the event property for a particular node. So to illustrate that, let me open the console for just a second.

And I'm going to grab a node from the DOM using query selector. This page has an image and so I'm gonna grab that there it is. Now if I do a dir This node allows me to explore its properties. Notice as we scroll down far enough, you see a lot of on, abort on before copy on before cut onblur on Council and on click on change. These are all event properties. So I can attach code to these event properties.

Using this technique, here's the node.on Click equals function, and then I define the function. Now notice that the event property has the word on in front of it, where when we do an add event listener, it's without the option. Now, why is the Add event listener preferred? Well, when you're adding to an event property, you can only do that once we're at event listeners. As I mentioned, you can have more than one event listener for a single event and multiple event listeners on each node. Were using event property you can only have code attached to an event property once.

So this is the preferred method. So I would encourage you to use this method for creating an event handler. All right, one more concept before we conclude this video. And that's events and I ate an earlier so I IE eight and earlier, does not support add eventlistener it uses instead attach event. So how would you account for IE eight and earlier if you needed to? Well, you would use an if statement like this.

So you simply, once you have the node, you would simply create an IF conditional To check button dot add event listener, and using the truthy and falsy that we talked about because this exists as a part of this node, you know it's supported. Therefore, you can go ahead and use the Add event listener technique. Otherwise, you use the attach event technique. Notice with attach event, it uses the on as a part of the event where add event listener does not. So that's the main difference between those besides the difference in the function name. And like I said, That's only necessary if you need to worry about IE eight browsers or earlier.

Alright, let's move on to the next video, where we will look at some examples of creating event handlers.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.