-
Notifications
You must be signed in to change notification settings - Fork 2
Exercises (Part 1): JavaScript for the Web
Note: JavaScript normally loads and runs when a web page loads. All of our JavaScript code will go in π script.js π, a file that has already been setup to load when our project loads.
In your code editor, re-open script.js if you closed it. Starting on a new/blank line below the code that's already written:
-
Use the
consoleobject'slog()method,console.log("..."), to log the message"Hello world!". - Open the console at the bottom of the preview pane and verify that your message was logged.
- Modify your code from step 1 to log a new message of your choosing!
console.log('some message');document.querySelector('someSelector');For this exercise, you will use console.log() and document.querySelector()β to select specific DOM elements and read their properties.
- Select the
mainelement. What is the value of itschildElementCountproperty? - Select an element with the
darkclass. What is the value of itsidproperty? - Select a
p(paragraph) element that's inside an element with IDrelaxing-images. What is the value of itsinnerTextproperty?
Selector hints:
- Class selector:
.dotclassName - Element selector:
#hashelementId
Pre-made CSS classes to use: picked, hidden, fun.
document.querySelector('someSelector').classList;An element's classList property contains a list of its classes.
-
add('classToAdd')β addsclassToAddto theclassList. If it is already there, nothing happens -
remove('classToRemove')β removesclassToRemovefrom theclassList. If it isn't there, nothing happens. -
toggle('classToToggle')β ifclassToToggleis in theclassList, it is removed; ifclassToToggleisn't there, it is added.
document.querySelector('someSelector').classList.add('classToAdd');
document.querySelector('someSelector').classList.remove('classToRemove');
document.querySelector('someSelector').classList.toggle('classToToggle');Pre-made CSS classes to use: hidden, transparent, fun.
- Variables are created (declared) using the
letkeyword, followed by another word which beocmes the variable's name. - Variables are start with an
undefinedvalue and are assigned values using the assignment operator,=. - Using a single statement to both declare a variable and assign it a value is called initializing:
let newVariable = valueOfVariable;An array is an ordered collection of data. A NodeList isn't an array, but it behaves similarly enough for our purposes.
document.querySelectorAll('someSelector')-
myArray[index]β retrieves an element frommyArrayin the position specified specified byindexinside the square brackets ([])
Pre-made CSS classes: message, reveal.
for loop syntax to loop through an array or list (e.g., myArray):
for (let index = 0; index < myArray.length; index = index + 1) {
// code to repeat
}In this exercise, we will use a for loop to reveal a HIDDEN MESSAGE on this web page! First, comment out any code from previous exercises. Now:
- The words of the HIDDEN MESSAGE are spread through the page's
sectionelements, but they all have themessageclass. - Use
letto declare a variable namedwords. - Assign
wordsthe result of aquerySelectorAll()that would match all the hidden words. - Using a
forloop,add()the reveal class to each element in yourwordsvariable. - Read the HIDDEN MESSAGE! : )
Pre-made CSS classes: is-collapsible, collapsible.
for (initialization; condition; afterthought) { ... }This webpage has a number of section elements that have been marked with the class is-collapsible to signal that they are compatible with this behaviour.
In this exercise, we will use a for loop to prepare our webpage for having collapsible section elements.
-
Open your
script.jsfile and comment out any code from previous exercises. We will be building on our new JavaScript code. -
Select all elements with the
is-collapsibleclass, store the result in a variable, and use aforloop toadd()thecollapsibleclass to each selected element.
For section elements that are collapsible, whether or not they are open or closed is based on the presence (or absence) of the open class on the section element's header element.
In this exercise, we will use event listeners to create usable buttons for the collapsible section elements. Your task is as follows:
- Create a callback function for
addEventListener()that willtoggle()theopenclass on thecurrentTargetof the event it is provided (e.g.,event.currentTarget). - Select all
headerelements that are descendant of elements with thecollapsibleclass and store them in a variable. Hint:_ Descendant selectors follow the pattern.className elementName - Add a
'click'event listener to each of these elements, providing the callback function you created above as the listener function.
Hints:
- Listeners are added to elements using the
addEventListener()method of an element. For a mouse click listener (aclickevent), this typically looks like:
someElement.addEventListener('click', listenerFunctionName)-
listenerFunctionNameβ the name of the function that gets run when the specified event is detected (called a callback function). - Function creation:
function functionName (parameterA, parameterB, ...){
// function code
}-
functionβ JavaScript's keyword for declaring functions. -
functionNameβ the name of the function that's being created; used to run (call) the function. -
(parameterA, ....)β information that the function needs to run properly. -
{ function code }β code to run when the function is called.
The section that contains the elements needed for next exercise's image slideshow is currently hidden. To prepare your webpage for the next exercise, and as a review of some of the things we've covered, your task is as follows:
- Select the element with ID
'relaxing-images'andremove()thehiddenclass from it. This element contains everything needed for the slideshow feature. That's it for this exercise!
The slide show's initial state should display the element with the first image and hide all other elements. To get the slideshow ready for use, your task is as follows:
- Inside this section, the slideshow images are each a list item (
li) element, they are all contained in an element with thecarousel-listclass. - Create a variable named
imgsto save this collection. - Then, except for the first, hide each element using the
hiddenclass.
Hint: the selector: '.carousel-list li' matches the appropriate list item elements for the slideshow!
Building on your code from Exercise 9:
- Add a
'click'event listener to.carousel-listthat uses a callback function namedgoToNextSibling. - Create a variable,
currentImg, and store the first slideshow list item element in it. - Then, create the function
goToNextSiblingwhich:- Hides
currentImgusing thehiddenclass. -
remove()s thehiddenclass from thenextElementSiblingofcurrentImg. - Updates (reassigns)
currentImgto itsnextElementSibling.
- Hides
If need be, use the code scaffold below to get started:
let imgs = document.querySelectorAll('.carousel-list li');
// ...rest of exercise 6 code here...
let currentImg = imgs[0]
function goToNextSibling(event) {
// ...your click listener code goes here...
};
document.querySelector('.carousel-list').addEventListener('click', goToNextSibling);