Exercise 12 Solution

Modern JavaScript Manipulating HTML Pages
12 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.87
List Price:  €131.42
You save:  €37.55
£81.12
List Price:  £113.58
You save:  £32.45
CA$137.18
List Price:  CA$192.06
You save:  CA$54.87
A$155.31
List Price:  A$217.44
You save:  A$62.13
S$136.23
List Price:  S$190.73
You save:  S$54.50
HK$783.54
List Price:  HK$1,096.98
You save:  HK$313.44
CHF 91.15
List Price:  CHF 127.61
You save:  CHF 36.46
NOK kr1,099.95
List Price:  NOK kr1,539.98
You save:  NOK kr440.02
DKK kr700.47
List Price:  DKK kr980.69
You save:  DKK kr280.21
NZ$169.19
List Price:  NZ$236.88
You save:  NZ$67.68
د.إ367.23
List Price:  د.إ514.14
You save:  د.إ146.90
৳10,966.71
List Price:  ৳15,353.84
You save:  ৳4,387.12
₹8,335.60
List Price:  ₹11,670.18
You save:  ₹3,334.57
RM477.75
List Price:  RM668.87
You save:  RM191.12
₦129,687.03
List Price:  ₦181,567.03
You save:  ₦51,880
₨27,809.84
List Price:  ₨38,934.89
You save:  ₨11,125.05
฿3,699.53
List Price:  ฿5,179.49
You save:  ฿1,479.96
₺3,253.91
List Price:  ₺4,555.61
You save:  ₺1,301.69
B$520.72
List Price:  B$729.03
You save:  B$208.31
R1,908.44
List Price:  R2,671.90
You save:  R763.45
Лв183.62
List Price:  Лв257.07
You save:  Лв73.45
₩137,876.14
List Price:  ₩193,032.11
You save:  ₩55,155.97
₪375.46
List Price:  ₪525.66
You save:  ₪150.20
₱5,749.22
List Price:  ₱8,049.14
You save:  ₱2,299.92
¥15,473.86
List Price:  ¥21,664.03
You save:  ¥6,190.16
MX$1,704.86
List Price:  MX$2,386.88
You save:  MX$682.01
QR364.60
List Price:  QR510.46
You save:  QR145.85
P1,387.89
List Price:  P1,943.11
You save:  P555.21
KSh13,348.66
List Price:  KSh18,688.66
You save:  KSh5,340
E£4,815.06
List Price:  E£6,741.28
You save:  E£1,926.22
ብር5,677.79
List Price:  ብር7,949.13
You save:  ብር2,271.34
Kz83,552.47
List Price:  Kz116,976.81
You save:  Kz33,424.33
CLP$95,916.40
List Price:  CLP$134,286.80
You save:  CLP$38,370.40
CN¥724.24
List Price:  CN¥1,013.97
You save:  CN¥289.72
RD$5,896.78
List Price:  RD$8,255.72
You save:  RD$2,358.94
DA13,474.35
List Price:  DA18,864.63
You save:  DA5,390.28
FJ$227.30
List Price:  FJ$318.23
You save:  FJ$90.93
Q777.19
List Price:  Q1,088.10
You save:  Q310.90
GY$20,906.69
List Price:  GY$29,270.20
You save:  GY$8,363.51
ISK kr14,110.58
List Price:  ISK kr19,755.38
You save:  ISK kr5,644.80
DH1,012.31
List Price:  DH1,417.28
You save:  DH404.96
L1,784.74
List Price:  L2,498.71
You save:  L713.97
ден5,778.05
List Price:  ден8,089.50
You save:  ден2,311.45
MOP$806.20
List Price:  MOP$1,128.72
You save:  MOP$322.51
N$1,920.04
List Price:  N$2,688.13
You save:  N$768.09
C$3,678.13
List Price:  C$5,149.53
You save:  C$1,471.39
रु13,346.54
List Price:  रु18,685.70
You save:  रु5,339.15
S/372.84
List Price:  S/521.99
You save:  S/149.15
K379.72
List Price:  K531.63
You save:  K151.90
SAR375.05
List Price:  SAR525.09
You save:  SAR150.03
ZK2,565.63
List Price:  ZK3,591.99
You save:  ZK1,026.35
L467.14
List Price:  L654.02
You save:  L186.87
Kč2,372.43
List Price:  Kč3,321.50
You save:  Kč949.06
Ft37,010.78
List Price:  Ft51,816.58
You save:  Ft14,805.79
SEK kr1,089.15
List Price:  SEK kr1,524.86
You save:  SEK kr435.70
ARS$87,115.87
List Price:  ARS$121,965.71
You save:  ARS$34,849.83
Bs691.97
List Price:  Bs968.79
You save:  Bs276.81
COP$392,689.60
List Price:  COP$549,781.15
You save:  COP$157,091.54
₡50,183.20
List Price:  ₡70,258.49
You save:  ₡20,075.28
L2,467.01
List Price:  L3,453.92
You save:  L986.90
₲739,276.32
List Price:  ₲1,035,016.43
You save:  ₲295,740.10
$U3,839.04
List Price:  $U5,374.81
You save:  $U1,535.77
zł405.30
List Price:  zł567.43
You save:  zł162.13
Already have an account? Log In

Transcript

It's time to take a look at the solution for exercise 12. Hopefully you were successful, but if not, we're going to walk through it together. So let me jump to sublime. This is the app.js file in the state, it was set up for you at the start of this exercise. So the first thing I want to do is I want to take care of the event that's going to call this initialize function. So I'm going to put that below the function that's been created.

Do window dot add eventlistener. And then the event I'm going to look for is load and I will call it simple as that. Now just for your information, there is also an event DOM content content loaded, that sometimes gets used for the same purpose. The main difference between those two is load wait until Not only is the HTML page loaded, but all of the assets are loaded as well. So for example, like images, and CSS files, and whatnot, DOM content loaded just waits till the HTML pages is ready to parse. So you're aware because you may see that event used.

Now we've got this initialize function being called. Let's go ahead and set up the rest. So first off, before I set up the handlers, I'm going to create two functions. One is going to handle going to the next page and then one is going to handle going to the previous page. So I'm just going to call these go next. And then I would like to include an If statement.

So, generally, the way we're going to go to the next page is we'll use the page counter variable, we will increment it. And then we'll use it to pull the page out of the pages array, and then set the location to the new page using the Assign method that I introduced to you when I introduced this exercise, so that's the process we're going to use. And so an easy way to do that would be simply increment page counter, and then set the new page using the location object dot assign method. However, what if the page counter goes too high? Do you want to catch that so that it prevents from causing an error? I do and so I'm going to put an if statement here to try to avoid that happening.

So I want to check this. Make sure That page counter is less than pages dot length minus one. If it's less than pages dot length minus one, then that means there is still a page I can go to, because this is paid, this would be equal to pages dot length minus one. So if our page counter is less than that, I can increment it and go to the next page. So now I would increment page counter. Whoops, forgot my semicolon, semicolon.

Now, I want to load the new page, I'm going to use the when variable dot location, that's the location object and then the assigned method. And I'm going to pass to the Assign method, the page from the pages array that is now equal to page counter. Oops. And close that with a semicolon. All right, that will take us to the next page. Let's go ahead and put a semicolon at the end of that expression.

Now let's create go previous. And I'll call this function go previous. Now the reason I'm creating a function, instead of just putting the code as a part of the listener, is because I want two different listeners to execute the same code. I want the listener that's for the key. Press analyst, enter this for the mouse click. I want both.

And so in order not to duplicate that same code, I'm creating it here. And then I will use it as a part of the listeners that I'll create next. Now once again, we want to check page counter. So we don't go to a number below zero, because that would give us an error because nothing would exist there. So I'm going to enter an if statement if page counter. And we'll simply check to see if it's greater than zero.

If it's greater than zero, we can decrement it and still get a page from the pages array. So let's decrement our page counter variable and then let's use the Assign method to load that page. The page counter variable points to in the pages array. All right, that looks pretty good. We've got our go next and our ago previous functions set up. Now we can go ahead and add our event listeners.

So let's first add the event listener for the key press. So when dot add event listener going to add it to the window object, I could add it to the document as well. I'm going to use key down as the event. There are three events associated with keys, key down key, press and key up, and I'll be using key down. Now we need to enter the function that's going to be executed. Well, you may be thinking, just enter going after go previous, but I can't quite do that yet.

I need to first check what key is pressed and then I know whether to call go next or go previous. So I will enter an anonymous function. Inside of parentheses, I'm going to put an E variable to capture the event object. press return, let's define it. So first and if statement. Let's check to see what the key code is.

Now I happen to already look this up. So I know that key code for the left arrow key is 37. I'm going to put a comment there for future reference. So that somebody's looking at this code later on when they'll that's the left arrow, arrow key. Then if the left arrow key is pressed, I want to call go previous. And you know, I'm going to go ahead and pass the event object.

Like I said, I'm not going to use it. But just in case in the future, I need to plus i will be calling these functions using the mouse click and In that case, instead of creating an anonymous function, I'm going to call them directly. And so I'm going to set these up to capture the event object anyway. So in that case, I'd want to pass this event object to the appropriate function as well. So that takes care of the left arrow key. Go previous.

Now, continue with our if statement. elsif. key code is equal to 39. And 39 is the right arrow key. So once again, I'm going to put a comment for that too. And then of course, we will call go next.

Put a semicolon at the end of that. event listener definition. All right, we have the one for the keystroke. Now, we need to add In event listener to that left and right arrow, well, so far I don't have anything in here to refer to the left and right arrow. So let's take a look at one of these pages. Notice that the ID for the left arrow simply left their ID is right arrow for that right arrow image.

So let's create a couple more variables just to pull those in. I'm just gonna call it left arrow, call the same thing is equal to document dot query. I'm going to use query selector I could use get element by ID. I just tend to favor query selector. So that will get us to the left arrow. Now let's grab the right arrow.

We enter the hash symbol, remember to indicate that it is an ID that we're after. We only have to do that with query selector, if we would have used get element by ID, we could have just entered left arrow or right arrow without the hash. Alright, now we have those two DOM nodes, and we can add an event listener to them. So down here below our key event listener. I'll do left arrow first, left arrow dot add event listener. And this is the click event.

Now the function we want to execute if it's the left arrow is go previous. So in this case, I don't need to do loops an anonymous function. I simply enter that the function that I've already defined up here that takes care of left arrow Let's do right arrow, add event listener, the event is click and go next. All right, those are our two handlers for the left arrow and the right arrow. We've got our handler for the, the keys. Everything's looking pretty good.

Let's go ahead and save this and try it out. So I'm going to start with page one. Let me just grab the file path to that. So I can open that to begin with. Now let's first see if we can go to the next page with the right URL. So I clicked there.

Sure enough agos, I can go back. Yes. Let's try the keys. Now. That's working great. Going back, working great.

How about if I press the key to go to the last page can I then go back using the arrow Sure enough, so those are working together as well. Which is nice and something that we needed to test. So it looks like things are working. Hopefully you were able to accomplish the same task, you may have done things a little bit differently. And that's one of the things that I really love about JavaScript is there are multiple ways to do things. If you did do it in a different way.

Hopefully you learn something from the way I did it as well. All right, let's move on to the next topic.

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.