All language subtitles for 001 Adding Javascript to Websites.en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French Download
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,570 --> 00:00:07,140 So up till now we've been learning about Javascript and using it inside the Chrome Developer Tools console. 2 00:00:07,200 --> 00:00:10,140 Now this is the purest form of Javascript. 3 00:00:10,140 --> 00:00:15,640 We're seeing the code as it is and seeing what it does. But it's no use learning about it 4 00:00:15,660 --> 00:00:17,620 if we're not going to apply it to our web site, 5 00:00:17,640 --> 00:00:17,970 right? 6 00:00:18,060 --> 00:00:22,920 So in this lesson, I want to show you how we can incorporate Javascript into our web sites. 7 00:00:22,920 --> 00:00:27,630 So firstly I'm going to create a new folder alongside my other web development projects, and I'm going 8 00:00:27,630 --> 00:00:33,810 to call this one the DOM. And we're going to explain what the DOM or the Document Object Model is all 9 00:00:33,810 --> 00:00:34,290 about 10 00:00:34,440 --> 00:00:36,150 coming up really really soon. 11 00:00:36,270 --> 00:00:42,450 But we're going to add this into Atom, and I'm going to create a new HTML file called index.html. 12 00:00:42,480 --> 00:00:48,240 Now we're going to go through our traditional process of adding in the html boilerplate, giving our 13 00:00:48,240 --> 00:00:56,640 web site a title, which I'm just going to call My Website, and then I'm going to link it up with a 14 00:00:56,640 --> 00:01:03,200 stylesheet as well, which I'll just call styles.css, and we can create that in here as well, 15 00:01:04,380 --> 00:01:05,350 styles. 16 00:01:05,360 --> 00:01:06,190 css. 17 00:01:06,220 --> 00:01:11,230 Now it's completely blank and that's totally fine because we're not going to be using it for a while. And 18 00:01:11,260 --> 00:01:16,200 we're going to head back into our HTML, and we're just going to add a heading that says Hello. 19 00:01:16,350 --> 00:01:19,910 And this is all we have as our simple web site. 20 00:01:20,180 --> 00:01:23,590 And you can see it doesn't look very exciting at the moment. 21 00:01:23,600 --> 00:01:27,870 Now what if we wanted to insert some Javascript? 22 00:01:27,880 --> 00:01:33,940 So previously we've been working a lot with alerts, and what if we can get our web site to load up a 23 00:01:33,940 --> 00:01:35,290 Javascript alert? 24 00:01:35,290 --> 00:01:41,120 Now in the CSS module we explored all the various ways that you can inject CSS into your HTML web 25 00:01:41,120 --> 00:01:41,820 sites. 26 00:01:42,010 --> 00:01:45,690 And if you remember there were three ways that we can go about doing that. 27 00:01:45,700 --> 00:01:51,030 One is inline CSS, the next is internal, and the last one is external 28 00:01:51,110 --> 00:01:53,410 CSS, as we have over here. 29 00:01:53,650 --> 00:01:58,150 Now if you don't remember any of that or if you skipped over and you want to refresh yourself then you 30 00:01:58,150 --> 00:02:01,750 can head back to the CSS module where we talk about these things. 31 00:02:01,960 --> 00:02:04,420 Now Javascript works really similarly. 32 00:02:04,480 --> 00:02:11,630 So we can add inline Javascript by simply adding an attribute into the HTML tag. 33 00:02:11,830 --> 00:02:17,510 So, for example, in the body, I'm going to add an attribute called onload. 34 00:02:17,620 --> 00:02:25,030 And what this means is that when the body of our web site gets loaded up, then whatever Javascript we 35 00:02:25,030 --> 00:02:29,260 place inside these two quotation marks will get carried out. 36 00:02:29,260 --> 00:02:36,400 So what I'm going to say is that when our body is loaded up I'm going to create an alert, and the alert 37 00:02:36,430 --> 00:02:38,420 is going to say Hello. 38 00:02:38,710 --> 00:02:44,800 Now there's a bit of a problem here because you can see that the Javascript that gets created inline 39 00:02:45,170 --> 00:02:49,750 in our HTML has to be included inside some quotation marks. 40 00:02:49,870 --> 00:02:56,260 But in our alert we also want to have the string “Hello”, which is also enclosed by quotation marks. 41 00:02:56,410 --> 00:03:02,890 So you can see how this is confusing, because to the browser it might think that this is a string, and 42 00:03:03,040 --> 00:03:09,310 this is a string, and you can see it in fact is highlighting it exactly that way, because the green parts 43 00:03:09,350 --> 00:03:14,160 are the things that it thinks is a string and the orange part it's interpreting as code. 44 00:03:14,170 --> 00:03:20,410 So, in these situations, when we've got a quotation mark inside another set of quotation marks, what we 45 00:03:20,410 --> 00:03:24,880 have to do is we have to downgrade our quotation marks to a single quote. 46 00:03:25,120 --> 00:03:29,650 So instead of having double quotes we change it to a single quote and now it knows what we're talking 47 00:03:29,650 --> 00:03:30,290 about. 48 00:03:30,310 --> 00:03:35,110 This is one pair and this is another pair, and this makes perfect sense 49 00:03:35,110 --> 00:03:42,070 now. When the body element gets loaded up it's going to look inside these quotation marks to carry out 50 00:03:42,160 --> 00:03:45,550 all of the Javascript that's in here, and, to be complete, 51 00:03:45,580 --> 00:03:49,760 we should also just add a semi-colon there to close off that line of code. 52 00:03:50,050 --> 00:03:55,390 And this line of code is very familiar to us because we've been using it a lot in the previous modules 53 00:03:55,690 --> 00:03:58,680 and all it does is it creates an alert that says Hello. 54 00:03:58,690 --> 00:04:06,220 So now if I save my web page and I head over to Chrome and I hit refresh, then you can see, as soon as 55 00:04:06,220 --> 00:04:13,360 the body gets loaded up, we get an alert that says Hello. Now inline Javascript has a lot of the downsides 56 00:04:13,450 --> 00:04:16,570 of inline CSS. It’s not very modular, 57 00:04:16,580 --> 00:04:21,270 it’s difficult to debug, and it's also not good practice as well, 58 00:04:21,310 --> 00:04:23,610 so try to avoid that if you can. 59 00:04:23,620 --> 00:04:30,040 Now the next way of incorporating Javascript is internal Javascript. So can add it by simply using 60 00:04:30,100 --> 00:04:37,630 a script tag, and everything in between the script can simply be Javascript code. So we can write script 61 00:04:37,660 --> 00:04:39,460 type javascript, 62 00:04:39,460 --> 00:04:41,320 alert (“Hello”). 63 00:04:41,920 --> 00:04:44,710 And you can see this is just normal old Javascript, 64 00:04:44,710 --> 00:04:47,740 it doesn't have to be contained inside quotation marks this time, 65 00:04:47,740 --> 00:04:52,700 so we can go back to our default way of putting strings inside quotation marks. 66 00:04:52,930 --> 00:04:57,580 And now if I hit save you can see it does exactly the same thing. 67 00:04:57,670 --> 00:05:02,980 The browser will read through this web site line by line and, once it hits this script tag, it'll carry 68 00:05:02,980 --> 00:05:08,270 out the Javascript that's inside, which in this case is simply an alert that says Hello. 69 00:05:08,620 --> 00:05:13,860 Now finally we can also incorporate Javascript as an external file. 70 00:05:13,900 --> 00:05:21,010 So instead of having a simple script tag we can have a script tag that has an external source and we 71 00:05:21,010 --> 00:05:26,030 specify the location of that file inside the attribute src. 72 00:05:26,240 --> 00:05:29,720 And so let's go ahead and create a new file, 73 00:05:29,740 --> 00:05:34,170 and let's just call index.js to create the new Javascript file. 74 00:05:34,510 --> 00:05:38,490 And now we can point to it by saying index.js. 75 00:05:38,500 --> 00:05:46,440 So now if we hit save we can add our Javascript code in here and we can say again, same thing, 76 00:05:46,450 --> 00:05:48,070 create an alert that says Hello. 77 00:05:48,430 --> 00:05:49,890 So now when I refresh, 78 00:05:50,170 --> 00:05:51,540 exactly the same thing, 79 00:05:51,580 --> 00:05:56,620 even though there's no Javascript inside our HTML code at all. 80 00:05:56,710 --> 00:06:02,000 So this should be pretty familiar especially if you've already completed the CSS module. 81 00:06:02,020 --> 00:06:08,930 Now the thing that is interesting though is that the position inside the HTML document where we place the 82 00:06:08,930 --> 00:06:13,250 script tag matters a huge deal. With CSS, 83 00:06:13,250 --> 00:06:20,360 we tend to put it inside the head element so that it gets loaded up first before any of the content 84 00:06:20,390 --> 00:06:23,300 of our web site, which tends to be inside the body. 85 00:06:23,300 --> 00:06:31,550 And this is important because if we placed this CSS code right up the bottom of our web site, say just 86 00:06:31,610 --> 00:06:41,790 as our web site ends, let's say that we go into styles.css and we change the h1's color to red. 87 00:06:41,880 --> 00:06:49,560 Now what happens when we run our code is that the browser will go from top to bottom line by line and 88 00:06:49,650 --> 00:06:55,840 when it gets to the h1 it'll create a normal bog standard h1, black text, Serif font, 89 00:06:56,010 --> 00:07:04,380 and it's only much later on, once it hits the stylesheet, does it actually apply these styles, changing 90 00:07:04,380 --> 00:07:09,090 the color to red. So now, if I run. 91 00:07:09,150 --> 00:07:15,690 So now if I go back to my web site and I refresh it, you can see the first thing that happens is I get 92 00:07:15,780 --> 00:07:18,210 a h1 that gets generated 93 00:07:18,220 --> 00:07:19,540 that's black, 94 00:07:20,010 --> 00:07:21,530 so we're at this line. 95 00:07:21,680 --> 00:07:28,400 The next thing that happens is our script gets carried out which if you remember is to create the alert. 96 00:07:28,470 --> 00:07:30,250 So we're at the alert at this point. 97 00:07:30,410 --> 00:07:38,460 And now if I dismiss the script it goes onto the next line which is carrying out the instructions inside 98 00:07:38,830 --> 00:07:41,590 our stylesheet namely changing the color to red. 99 00:07:41,820 --> 00:07:49,500 So that's why, with CSS, you always want to put it right at the top, just below the title usually. But with 100 00:07:49,500 --> 00:07:57,690 Javascript it's the opposite story, because if inside our script we tried to change an HTML element that 101 00:07:57,750 --> 00:08:01,410 does not yet exist then it will fail. 102 00:08:01,410 --> 00:08:07,410 So I'm going to go inside my index.js and I'm going to write some Javascript code that looks 103 00:08:07,410 --> 00:08:16,050 inside our HTML document, looks for the selector that's h1, and then when it finds that element, I'm 104 00:08:16,050 --> 00:08:20,700 going to change its inner HTML, which is basically the text that's inside. 105 00:08:20,700 --> 00:08:22,770 So currently the inner HTML, 106 00:08:22,800 --> 00:08:30,330 so between the html elements, says Hello, but I'm going to change it to the string that's Good Bye instead. 107 00:08:30,330 --> 00:08:35,130 Don't worry if this looks unfamiliar, we're going to be digging much deeper into this in the coming lessons. 108 00:08:35,130 --> 00:08:36,800 Now here's the interesting part. 109 00:08:36,900 --> 00:08:46,380 If my script, which is trying to look for an h1 to change its text to Good Bye, is below the h1, 110 00:08:46,380 --> 00:08:51,990 so after the h1 has already been created, then you can see that it works. 111 00:08:51,990 --> 00:08:54,650 It found the h1 and it changed 112 00:08:54,680 --> 00:08:58,800 it's inner HTML, or rather the text, to Good Bye. But, 113 00:08:58,830 --> 00:09:04,050 if I move this script into the head which will get loaded up first, 114 00:09:04,110 --> 00:09:11,370 so as the browser reads from top to bottom it will hit the script and it will look inside our index.js 115 00:09:11,370 --> 00:09:17,440 and try to look for an h1 to change its text to Good Bye. 116 00:09:17,490 --> 00:09:21,560 But at this stage we don't have an h1 on the screen yet, 117 00:09:21,630 --> 00:09:23,940 so what is it going to change? 118 00:09:23,970 --> 00:09:25,330 So let's check this out. 119 00:09:25,380 --> 00:09:32,070 If I hit refresh you can see that we actually get an error in the console and it says that Cannot set 120 00:09:32,070 --> 00:09:34,760 property 'innerHTML' of null. 121 00:09:34,920 --> 00:09:40,620 And that's because, at the time point when we tried to run this script to look for an h1, there were 122 00:09:40,620 --> 00:09:41,610 no h1s. 123 00:09:41,610 --> 00:09:42,780 It didn't exist yet. 124 00:09:42,870 --> 00:09:44,410 So this was null, 125 00:09:44,580 --> 00:09:46,600 and that's why it didn't work. 126 00:09:46,740 --> 00:09:54,170 So best practice is always to put the script right at the end just before the closing body tag. 127 00:09:54,510 --> 00:10:00,150 And the added benefit of this is, if you have a lot of Javascript code, which usually is a little bit 128 00:10:00,150 --> 00:10:06,870 more time consuming to run, then at least all of the content of your web site will have been loaded up 129 00:10:06,870 --> 00:10:12,970 for the users to see, and the parts that they can't perceive, like the script code, happens afterwards, 130 00:10:12,990 --> 00:10:15,580 so your website looks like it loads faster, 131 00:10:15,810 --> 00:10:21,060 whereas if you put the script right at the top, and the browser has to go through all of the code before 132 00:10:21,070 --> 00:10:26,580 it can display all of the elements, then it might look like your web site is taking a long time to load 133 00:10:26,580 --> 00:10:29,370 up, which nobody has the patience for, right? Now, 134 00:10:29,400 --> 00:10:33,980 in the next lesson, we're going to learn more about this Document Object Model, 135 00:10:34,140 --> 00:10:40,090 and the technology that's enabling us to select and manipulate the HTML elements. 136 00:10:40,090 --> 00:10:43,460 So for all of that and more, I'll see you on the next lesson. 14646

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.