SlideShare a Scribd company logo
Build an App with Javascript & jQuery
July 2017
WIFI: CrossCamp.us Events
bit.ly/web-app-la
1
Welcome to "Build an App with Javascript and jQuery". The Wi-Fi network is X. The website for this class is Z.
Speaker notes
Instructor
TAs
Steve Martin
Thinkful student
Broadcast Supervisor 89.3 KPCC
CrossCamp.us Events bit.ly/web-app-la
2
Let me start with a little about me. My name is X and my background is Y. We have some TA's that will be helping us today. I'm going to go around
and have them introduce themselves.
Speaker notes
About you
What's your name?
What is your programming experience?
Why do you want to learn JavaScript/jQuery?
http://www.loremipsum.com/example
Wi-Fi: orem Ipsum
PW: orem Ipsum
L
L
CrossCamp.us Events bit.ly/web-app-la
3
I'd love to learn a little more about you guys. So can we go around the room and can everyone give us your name, what your goal is for attending
the class and your programming background?
Speaker notes
About Thinkful
Thinkful helps people become developers or data scientists
through one-on-one mentorship and project-based learning
These workshops are built using this approach.
CrossCamp.us Events bit.ly/web-app-la
4
Thinkful is hosting the event tonight. Thinkful is a coding bootcamp built on a belief in one-on-one mentorship and project based learning. This
workshop today is designed using this approach. The bulk of the workshop will be you guys working one-on-one with our TA’s to build a real project.
Speaker notes
Suggestions for learning
Don't treat this as a drill, we're making something real
Don't get discouraged, struggle leads to mastery
Don't be shy, take full advantage of our support
CrossCamp.us Events bit.ly/web-app-la
5
To get the most out of this class, we have three suggestions for getting the most our of this experience.
The first suggestion is to realize we're building something real and accept that's going to be messy. There will be many right answers and a good
project is never done. There will always be ways you can make it better.
Whatever your level, we're going to push you so it's a little hard. Even basic addition was hard at one point. Struggle is a part of mastery. Try not to
get discouraged.
Finally, we're here to help. Take advantage of that support, make sure to ask questions during lecture when you're confused. Make sure you call
your TA when you need help. When coding, be resourceful. Always!
Speaker notes
This is what we're making
http://www.loremipsum.com/example
Wi-Fi: orem Ipsum
PW: orem Ipsum
L
L
CrossCamp.us Events bit.ly/web-app-la
6
Today we're building a shopping list app. This app does three things. First you can type the list of an item to add and click the "add item" button to
add it to your shopping list. Second you can click on an item to check it off the list. Third you can click the X to remove the item altogether.
Speaker notes
Agenda
Go over starter code (10 min)
Learn key jQuery & Javascript concepts (30 min)
Build your app! (30 min)
Go over solutions (10 min)
Next steps (10 min)
http://www.loremipsum.com/example
Wi-Fi: orem Ipsum
PW: orem Ipsum
L
L
CrossCamp.us Events bit.ly/web-app-la
7
I’ll start by walking you through the HTML/CSS starter code so you have a reference of what you’ll be working with. Then I’ll go over important
Javascript and jQuery concepts that you’ll need to complete the app. You’ll then build the app during which time the TA’s and myself will be walking
around to help you guys out. At the end we’ll go over solutions and then cover next steps for continuing your learning.
Speaker notes
Quick HTML/CSS Refersher
CrossCamp.us Events bit.ly/web-app-la
8
HTML defines the content and the structure of a page. We use "tags" to divide our HTML into sections. Each section of HTML has an opening tag,
and a closing tag (demonstrate).
In our HTML, we can create labels for our sections. We create labels by adding a "class=" some name in our opening tag. These labels help us
"grab" these sections both to add styles. But also as we'll see with jQuery, to manipulate our HTML with Javascript.
Lets start with adding styles. We add styles with CSS. We can basically grab a section using it's class. Then we can define different aspects of the
section we want to change. (demonstrate)
In this case, we are going to grab the "title" section, then make it blue and put a line through it.
Speaker notes
Starter code walkthrough
http://bit.ly/tf-shopping-list
CrossCamp.us Events bit.ly/web-app-la
9
Alright, now let's dive into the starter code. Go ahead and go to this url to get the starter code. We’re using a online code editor called Glitch which
will let us see the result of our code really quickly.
On the README.MD file you should see an overview of the project and the challenges you'll be completing. The files we’ll be using today on the left
are client.js, style.css, and index.html. You can ignore server.js, package.json and .env. Once you’ve written some code, click the “Show Live” button
at the top to open a new tab that will automatically update as you edit your code.
Next let's go over the starter code so you guys know what’s going on. At the top of our index.html, we have a head element. This element is different
from most others because what it contains won’t actually show up on the page. The main purpose of the head section is to pull other files into our
app. This is known as “importing”. You can see here that we're importing our styles.css, our client.js, and jQuery which will be discussing soon.
We generally put the content of our HTML, the stuff people might see, in the "body" section of our HTML (versus the "head" section).
The "list-content" section houses the three main components of our app. The first component is the text box where a user will type in their shopping
list item. The second component is a list where we will add items to our shopping cart. It's empty for now but as we add items to our list, it will show
up here. The third component is a button called Add Item. When people click on this button, the item they type in will be added to the list.
Speaker notes
Think of our HTML as a "tree"
<form>
list-content
<input>
item-input
<ul>
shopping-list
<button>
add-item
CrossCamp.us Events
10
bit.ly/web-app-la
We can visualize these HTML components as a tree. We have a list-content section but inside that section, we have three smaller sections: our text
input, our shopping list, and our button.
In HTML, we call this tree the DOM or the "Document Object Model". In this system, list-content is the "parent" to the three components and the
three components are the "children" to list-content.
Speaker notes
What is Javascript? What is jQuery?
<input>
<ul>
shopping-list <button>
<li>
String
cheese
<li>
Summer
sausage
<li>
Chicken
nuggets
11
<div>
CrossCamp.us Events bit.ly/web-app-la
jQuery is an extension of Javascript. jQuery does a bunch of things one of which is to make it easy to add, modify and remove items from our DOM.
70% of websites use jQuery.
For this app, what we want to do is add sections to our shopping list after someone adds a grocery item to the input box and then taps the button. So
when someone taps the button, we'll add a new section to the shopping list section, one section for each item added. Those items will be children to
shopping list, which is a child to list-content.
Speaker notes
"Grabbing" a section directly
$('.shopping-list')
jQuery always starts with this
Element to grab
CrossCamp.us Events bit.ly/web-app-la
12
jQuery makes it really easy to add, change, and remove sections from our HTML.
In this case we want to add to a section. The first thing we must do is to tell the computer which section we want to grab.
In jQuery, the first thing we'll do is start our line of code with a "$". This tells the computer we're writing a jQuery command. Then inside the
parentheses, we add the "class" of the section we want to grab. So in this case, "shopping-list" but starting with a ".".
Speaker notes
jQuery walkthrough
CrossCamp.us Events bit.ly/web-app-la
13
NOTE: All lines for the walkthrough are accessible in the Javascript tab of the demo.
Once we grab the right section, we can then use jQuery to perform some action: to add, change, or remove, that section.
Lets start by seeing how we can use jQuery to add and remove sections from our app. To add a section, the first thing we want to do is grab the
section we want to add to. In this case, we want to add our shopping items to the shopping-list section. So we'll $('.shopping-list'). Then we want to
perform an add action. One add action is .append. So lets say we want to add an apple to our shopping list we can do this:
$('.shopping-list').append("
apples
")
Now we've added this item and given it a label "item". To remove the items we added, we can then do this:
$('.item').remove()
Another thing we can use jQuery for is to change how a section looks. There are a number of ways to do this but the best way to do this is to define
a new class in your CSS and then add or remove those "labels" or "classes" to sections. (enable the CSS tab for this section)
Lets say we wanted to use jQuery to change the background color of our header section to pink. In this case, we'd define a new class called "pink".
When we add "pink" as a class to the header section, background color will change to pink.
$('header').addClass('pink')
You can see here that in this case, header is not a class, but the name of a tag. To grab all sections with a specific HTML tag, we just give the tag
name without the period in front.
With jQuery, we can "chain" actions together. So once we grab a section, we can perform action after action on it in a particular order. Here's an
example of using chaining to change the button.
$('.add-item').text("Add Shopping Item").css("background", "pink")
Finally, you can use jQuery to "traverse" or move up and down the HTML tree to select elements. The easiest way to grab an element is to grab it
directly via it's class label. But in some cases, you might not know the class label you want to grab, just where it is in relation to another section. In
those cases, you can "traverse" the tree to grab the right section before acting on it. Here's an example:
Speaker notes
$('.shopping-list').append("
Apple
")
$('.shopping-list').children().first().text("Oranges")
Attaching an "Event Listener"
http://www.loremipsum.com/example
Wi-Fi: orem Ipsum
PW: orem Ipsum
L
L
CrossCamp.us Events bit.ly/web-app-la
14
jQuery also lets us manage what happens when some event occurs, say when someone clicks on our button. We do this by attaching a "listener" on
a section. A section would then listen, for say, a "click" and then execute the actions we tell it to once that section is clicked.
The code will run every time it "hears" that event. The easiest way to attach a listener is when a section has been loaded. There are, however, ways
to add listeners to sections that we expect will be loaded but haven't yet.
In this case, we want to add an event listener to our button so when someone clicks on it, the text of the button changes and as well as the
background color of the button.
We see here that we've added a listener to add-item and then we grab add-item again. Instead of repeating ourselves, jQuery lets us refer to thing
that was clicked by just saying event.currentTarget. This is an important concept that you'll build on later as you do more programming.
Speaker notes
Real developers use Google... a lot
CrossCamp.us Events bit.ly/web-app-la
15
Google is an everyday part of being a developer. A key part of becoming a developer is getting comfortable using Google to learn and look up things.
The more you code, the more you will use Google, not the other way around. When you get stuck tonight, or whenever, make sure to Google it first!
Speaker notes
Let's work on the first step together
http://bit.ly/tf-shopping-list
http://www.loremipsum.com/example
Wi-Fi: orem Ipsum
PW: orem Ipsum
L
L
CrossCamp.us Events bit.ly/web-app-la
16
Alright, with that let's start building our app.
On the left, you can see the files you'll be working on. The Readme will give you instructions. You'll be writing your code in client.js but referring to
style.css and index.html. You shouldn't need to touch any of the other files.
After you write your code, it will automatically be saved. At any point you can hit "Show Live" to see a live version of your app.
Let's start the first step together. So in this first step, we're adding an event listener to the add-item button so when it's clicked, we're going to
execute this code which should grab the text in the input box and add that item to our shopping list.
The first thing we want to do is grab the value in our input box. How would we grab that element? (Ultimately fill in answer)
Alright, once we grab that element, how might we pull out the text inside it? We haven't shown you this yet so I want you guys to Google "getting a
value out of an input box with jQuery". Does anyone know the right function to use? (Ultimately fill in the answer)
Alright so now we've stored the text from our input box in this variable listItem. So when we write listItem, that value will show up. We've combined
that listItem with some HTML to add to our shopping list. Then once you're done with that, we want to zero out the text in our input box. Take it from
here!
(Assign TA's to different sections of class)
Speaker notes
Solution
CrossCamp.us Events bit.ly/web-app-la
17
Alright. Let's go over the solutions to the main challenges.
The first task was to add HTML to the shopping list. We do that with the "prepend" or "append" action. In the parentheses we just give the computer
the HTML we want to add. To zero-out the input box, we grab the item-input section and use the .val function to set the box to "".
For the second challenge, the user will click on the X button. When we try to remove it, it just removed the X. What we need to do is "traverse" to the
parent of the X which is the entire section and remove that. We can chain these actions together.
Finally, when we click on the checkbox next to the item, we want to add or remove the "complete" class to add and remove the checkmark. We can
do this pretty easily with the toggleClass function.
Speaker notes
Ways to keep learning
More Structure
Less Structure
More SupportLess Support
18
Our instructors help us write, teach, andOur instructors help us write, teach, and
improve workshops & our curriculumimprove workshops & our curriculum
19
In terms of structure, students should be asking what does the program look like - is it 1:1, 1:15 1:30? and what is the frequency?
From our experience with students, we've learned that the most effective support is 1:1 - this way each student can get their specific questions and
challenges addressed to keep learning and building.
In our program, each student is working 1:1 with a mentor throughout the program and these mentoring sessions can be scheduled around your
schedule, allowing students to have flexibility to learn how to program while maintaining their job
Speaker notes
Career prep and job-placement
Liz Stephanie
Our career services team has helped 93% of our grads
begin jobs at companies like:
20
Take a Thinkful tour!
Talk to one of us to set something up !
Take a look through Thinkful's
student platform to see if
project-based, online learning
is a good fit for you 👀
While we're at it, give us
feedback on tonight's
workshop.
21

More Related Content

PDF
Web app-la-jan-2
Thinkful
 
PDF
bawawjspdx082117
Thinkful
 
PDF
Build an App with JavaScript & jQuery
Aaron Lamphere
 
PDF
Deck 6-456 (1)
Justin Ezor
 
PDF
Baawjsajq109
Thinkful
 
PDF
Fccwc326
Shannon Gallagher
 
PDF
Deck 893ff61f-1fb8-4e15-a379-775dfdbcee77-12-53
Ivy Rueb
 
PPTX
HTML 101
lordis89
 
Web app-la-jan-2
Thinkful
 
bawawjspdx082117
Thinkful
 
Build an App with JavaScript & jQuery
Aaron Lamphere
 
Deck 6-456 (1)
Justin Ezor
 
Baawjsajq109
Thinkful
 
Deck 893ff61f-1fb8-4e15-a379-775dfdbcee77-12-53
Ivy Rueb
 
HTML 101
lordis89
 

What's hot (20)

DOCX
HTML Notes And Some Attributes
HIFZUR RAHMAN
 
DOCX
Introduction to web design
Fitra Sani
 
PPTX
HTML 101r
lordis89
 
PPT
Wikispaces
polydeucesl5
 
PDF
How to remember everything using Evernote?
Ethel Ilagan , ECE, MSIEM
 
PDF
How To Set Up A Blog
Bobby Norris
 
PPT
Girl Scouts Website Designer Badge Seminar - Presentation Slides
Lauren Hayward Schaefer
 
PDF
Girl Scouts Website Designer Badge Seminar - Workbook
Lauren Hayward Schaefer
 
PPT
HTML Intermediate
c525600
 
PPT
HTML Advanced
c525600
 
PDF
Intro to IBM Bluemix DevOps Services, a Workshop with a Cloudant twist
Lauren Hayward Schaefer
 
PDF
Joomla Quick Start 1
guest38bfe1
 
PPT
Web Expression 3.0
rimt2010
 
PDF
Best Laravel Eloquent Tips and Tricks
Techtic Solutions
 
DOCX
Cis 407 i lab 1 of 7
helpido9
 
PDF
Lipstick on a Magical Pony: dynamic web pages without Javascript
Tim Bell
 
PPT
Creating File Paths in HTML
Jenna Kammer
 
PDF
Sitepoint.com a basic-html5_template
Daniel Downs
 
PPTX
500-Level Guide to Career Internals
Brent Ozar
 
PDF
Asp net-mvc-3 tier
Mohd Manzoor Ahmed
 
HTML Notes And Some Attributes
HIFZUR RAHMAN
 
Introduction to web design
Fitra Sani
 
HTML 101r
lordis89
 
Wikispaces
polydeucesl5
 
How to remember everything using Evernote?
Ethel Ilagan , ECE, MSIEM
 
How To Set Up A Blog
Bobby Norris
 
Girl Scouts Website Designer Badge Seminar - Presentation Slides
Lauren Hayward Schaefer
 
Girl Scouts Website Designer Badge Seminar - Workbook
Lauren Hayward Schaefer
 
HTML Intermediate
c525600
 
HTML Advanced
c525600
 
Intro to IBM Bluemix DevOps Services, a Workshop with a Cloudant twist
Lauren Hayward Schaefer
 
Joomla Quick Start 1
guest38bfe1
 
Web Expression 3.0
rimt2010
 
Best Laravel Eloquent Tips and Tricks
Techtic Solutions
 
Cis 407 i lab 1 of 7
helpido9
 
Lipstick on a Magical Pony: dynamic web pages without Javascript
Tim Bell
 
Creating File Paths in HTML
Jenna Kammer
 
Sitepoint.com a basic-html5_template
Daniel Downs
 
500-Level Guide to Career Internals
Brent Ozar
 
Asp net-mvc-3 tier
Mohd Manzoor Ahmed
 
Ad

Similar to Build an App with JavaScript and jQuery - LA - July 18 (20)

PDF
Deck 8983a1d9-68df-4447-8481-3b4fd0de734c(1)
Thinkful
 
PDF
Build an App with JavaScript and jQuery - LA - July 18 Pasadena
Thinkful
 
PDF
fuser interface-development-using-jquery
Kostas Mavridis
 
KEY
User Interface Development with jQuery
colinbdclark
 
PDF
Build a Web App with JavaScript and jQuery (5:18:17, Los Angeles)
Thinkful
 
PDF
Write Less Do More
Remy Sharp
 
PDF
Build an App with JavaScript and jQuery - LA - July 27
Thinkful
 
PDF
jQuery Loves Developers - Oredev 2009
Remy Sharp
 
PDF
Build an App with JavaScript and jQuery (DTLA, 06/21)
Thinkful
 
PPTX
Untangling7
Derek Jacoby
 
PDF
Baawjsajq109
Thinkful
 
PPT
J query b_dotnet_ug_meet_12_may_2012
ghnash
 
PDF
Web app with j query &amp; javascript (5:4)
Thinkful
 
PDF
Devdays Seattle jQuery Intro for Developers
cody lindley
 
PDF
Stack Overflow Austin - jQuery for Developers
Jonathan Sharp
 
PPTX
Beginning jQuery
Mindy McAdams
 
PPT
Jquery presentation
Narendra Dabhi
 
PPTX
Monster JavaScript Course - 50+ projects and applications
Laurence Svekis ✔
 
PDF
Deck 8983a1d9-68df-4447-8481-3b4fd0de734c-41-93-163-212-239-274-347-408 (1)
Justin Ezor
 
PDF
jQuery for beginners
Siva Arunachalam
 
Deck 8983a1d9-68df-4447-8481-3b4fd0de734c(1)
Thinkful
 
Build an App with JavaScript and jQuery - LA - July 18 Pasadena
Thinkful
 
fuser interface-development-using-jquery
Kostas Mavridis
 
User Interface Development with jQuery
colinbdclark
 
Build a Web App with JavaScript and jQuery (5:18:17, Los Angeles)
Thinkful
 
Write Less Do More
Remy Sharp
 
Build an App with JavaScript and jQuery - LA - July 27
Thinkful
 
jQuery Loves Developers - Oredev 2009
Remy Sharp
 
Build an App with JavaScript and jQuery (DTLA, 06/21)
Thinkful
 
Untangling7
Derek Jacoby
 
Baawjsajq109
Thinkful
 
J query b_dotnet_ug_meet_12_may_2012
ghnash
 
Web app with j query &amp; javascript (5:4)
Thinkful
 
Devdays Seattle jQuery Intro for Developers
cody lindley
 
Stack Overflow Austin - jQuery for Developers
Jonathan Sharp
 
Beginning jQuery
Mindy McAdams
 
Jquery presentation
Narendra Dabhi
 
Monster JavaScript Course - 50+ projects and applications
Laurence Svekis ✔
 
Deck 8983a1d9-68df-4447-8481-3b4fd0de734c-41-93-163-212-239-274-347-408 (1)
Justin Ezor
 
jQuery for beginners
Siva Arunachalam
 
Ad

More from Thinkful (20)

PDF
893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-25-46-115-141-308-324-370
Thinkful
 
PDF
LA 1/31/18 Intro to JavaScript: Fundamentals
Thinkful
 
PDF
LA 1/31/18 Intro to JavaScript: Fundamentals
Thinkful
 
PDF
Itjsf129
Thinkful
 
PDF
Twit botsd1.30.18
Thinkful
 
PDF
Build your-own-instagram-filters-with-javascript-202-335 (1)
Thinkful
 
PDF
Baggwjs124
Thinkful
 
PDF
Become a Data Scientist: A Thinkful Info Session
Thinkful
 
PDF
Vpet sd-1.25.18
Thinkful
 
PDF
LA 1/18/18 Become A Web Developer: A Thinkful Info Session
Thinkful
 
PDF
How to Choose a Programming Language
Thinkful
 
PDF
Batbwjs117
Thinkful
 
PDF
1/16/18 Intro to JS Workshop
Thinkful
 
PDF
LA 1/16/18 Intro to Javascript: Fundamentals
Thinkful
 
PDF
(LA 1/16/18) Intro to JavaScript: Fundamentals
Thinkful
 
PDF
Websitesd1.15.17.
Thinkful
 
PDF
Bavpwjs110
Thinkful
 
PDF
Byowwhc110
Thinkful
 
PDF
Getting started-jan-9-2018
Thinkful
 
PDF
Introjs1.9.18tf
Thinkful
 
893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-25-46-115-141-308-324-370
Thinkful
 
LA 1/31/18 Intro to JavaScript: Fundamentals
Thinkful
 
LA 1/31/18 Intro to JavaScript: Fundamentals
Thinkful
 
Itjsf129
Thinkful
 
Twit botsd1.30.18
Thinkful
 
Build your-own-instagram-filters-with-javascript-202-335 (1)
Thinkful
 
Baggwjs124
Thinkful
 
Become a Data Scientist: A Thinkful Info Session
Thinkful
 
Vpet sd-1.25.18
Thinkful
 
LA 1/18/18 Become A Web Developer: A Thinkful Info Session
Thinkful
 
How to Choose a Programming Language
Thinkful
 
Batbwjs117
Thinkful
 
1/16/18 Intro to JS Workshop
Thinkful
 
LA 1/16/18 Intro to Javascript: Fundamentals
Thinkful
 
(LA 1/16/18) Intro to JavaScript: Fundamentals
Thinkful
 
Websitesd1.15.17.
Thinkful
 
Bavpwjs110
Thinkful
 
Byowwhc110
Thinkful
 
Getting started-jan-9-2018
Thinkful
 
Introjs1.9.18tf
Thinkful
 

Recently uploaded (20)

PDF
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PDF
Chapter 2 Digital Image Fundamentals.pdf
Getnet Tigabie Askale -(GM)
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
Make GenAI investments go further with the Dell AI Factory - Infographic
Principled Technologies
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PDF
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
DOCX
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PPT
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PDF
Software Development Company | KodekX
KodekX
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
Enable Enterprise-Ready Security on IBM i Systems.pdf
Precisely
 
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
Chapter 2 Digital Image Fundamentals.pdf
Getnet Tigabie Askale -(GM)
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Make GenAI investments go further with the Dell AI Factory - Infographic
Principled Technologies
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
Software Development Company | KodekX
KodekX
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Enable Enterprise-Ready Security on IBM i Systems.pdf
Precisely
 

Build an App with JavaScript and jQuery - LA - July 18

  • 1. Build an App with Javascript & jQuery July 2017 WIFI: CrossCamp.us Events bit.ly/web-app-la 1
  • 2. Welcome to "Build an App with Javascript and jQuery". The Wi-Fi network is X. The website for this class is Z. Speaker notes
  • 3. Instructor TAs Steve Martin Thinkful student Broadcast Supervisor 89.3 KPCC CrossCamp.us Events bit.ly/web-app-la 2
  • 4. Let me start with a little about me. My name is X and my background is Y. We have some TA's that will be helping us today. I'm going to go around and have them introduce themselves. Speaker notes
  • 5. About you What's your name? What is your programming experience? Why do you want to learn JavaScript/jQuery? http://www.loremipsum.com/example Wi-Fi: orem Ipsum PW: orem Ipsum L L CrossCamp.us Events bit.ly/web-app-la 3
  • 6. I'd love to learn a little more about you guys. So can we go around the room and can everyone give us your name, what your goal is for attending the class and your programming background? Speaker notes
  • 7. About Thinkful Thinkful helps people become developers or data scientists through one-on-one mentorship and project-based learning These workshops are built using this approach. CrossCamp.us Events bit.ly/web-app-la 4
  • 8. Thinkful is hosting the event tonight. Thinkful is a coding bootcamp built on a belief in one-on-one mentorship and project based learning. This workshop today is designed using this approach. The bulk of the workshop will be you guys working one-on-one with our TA’s to build a real project. Speaker notes
  • 9. Suggestions for learning Don't treat this as a drill, we're making something real Don't get discouraged, struggle leads to mastery Don't be shy, take full advantage of our support CrossCamp.us Events bit.ly/web-app-la 5
  • 10. To get the most out of this class, we have three suggestions for getting the most our of this experience. The first suggestion is to realize we're building something real and accept that's going to be messy. There will be many right answers and a good project is never done. There will always be ways you can make it better. Whatever your level, we're going to push you so it's a little hard. Even basic addition was hard at one point. Struggle is a part of mastery. Try not to get discouraged. Finally, we're here to help. Take advantage of that support, make sure to ask questions during lecture when you're confused. Make sure you call your TA when you need help. When coding, be resourceful. Always! Speaker notes
  • 11. This is what we're making http://www.loremipsum.com/example Wi-Fi: orem Ipsum PW: orem Ipsum L L CrossCamp.us Events bit.ly/web-app-la 6
  • 12. Today we're building a shopping list app. This app does three things. First you can type the list of an item to add and click the "add item" button to add it to your shopping list. Second you can click on an item to check it off the list. Third you can click the X to remove the item altogether. Speaker notes
  • 13. Agenda Go over starter code (10 min) Learn key jQuery & Javascript concepts (30 min) Build your app! (30 min) Go over solutions (10 min) Next steps (10 min) http://www.loremipsum.com/example Wi-Fi: orem Ipsum PW: orem Ipsum L L CrossCamp.us Events bit.ly/web-app-la 7
  • 14. I’ll start by walking you through the HTML/CSS starter code so you have a reference of what you’ll be working with. Then I’ll go over important Javascript and jQuery concepts that you’ll need to complete the app. You’ll then build the app during which time the TA’s and myself will be walking around to help you guys out. At the end we’ll go over solutions and then cover next steps for continuing your learning. Speaker notes
  • 15. Quick HTML/CSS Refersher CrossCamp.us Events bit.ly/web-app-la 8
  • 16. HTML defines the content and the structure of a page. We use "tags" to divide our HTML into sections. Each section of HTML has an opening tag, and a closing tag (demonstrate). In our HTML, we can create labels for our sections. We create labels by adding a "class=" some name in our opening tag. These labels help us "grab" these sections both to add styles. But also as we'll see with jQuery, to manipulate our HTML with Javascript. Lets start with adding styles. We add styles with CSS. We can basically grab a section using it's class. Then we can define different aspects of the section we want to change. (demonstrate) In this case, we are going to grab the "title" section, then make it blue and put a line through it. Speaker notes
  • 18. Alright, now let's dive into the starter code. Go ahead and go to this url to get the starter code. We’re using a online code editor called Glitch which will let us see the result of our code really quickly. On the README.MD file you should see an overview of the project and the challenges you'll be completing. The files we’ll be using today on the left are client.js, style.css, and index.html. You can ignore server.js, package.json and .env. Once you’ve written some code, click the “Show Live” button at the top to open a new tab that will automatically update as you edit your code. Next let's go over the starter code so you guys know what’s going on. At the top of our index.html, we have a head element. This element is different from most others because what it contains won’t actually show up on the page. The main purpose of the head section is to pull other files into our app. This is known as “importing”. You can see here that we're importing our styles.css, our client.js, and jQuery which will be discussing soon. We generally put the content of our HTML, the stuff people might see, in the "body" section of our HTML (versus the "head" section). The "list-content" section houses the three main components of our app. The first component is the text box where a user will type in their shopping list item. The second component is a list where we will add items to our shopping cart. It's empty for now but as we add items to our list, it will show up here. The third component is a button called Add Item. When people click on this button, the item they type in will be added to the list. Speaker notes
  • 19. Think of our HTML as a "tree" <form> list-content <input> item-input <ul> shopping-list <button> add-item CrossCamp.us Events 10 bit.ly/web-app-la
  • 20. We can visualize these HTML components as a tree. We have a list-content section but inside that section, we have three smaller sections: our text input, our shopping list, and our button. In HTML, we call this tree the DOM or the "Document Object Model". In this system, list-content is the "parent" to the three components and the three components are the "children" to list-content. Speaker notes
  • 21. What is Javascript? What is jQuery? <input> <ul> shopping-list <button> <li> String cheese <li> Summer sausage <li> Chicken nuggets 11 <div> CrossCamp.us Events bit.ly/web-app-la
  • 22. jQuery is an extension of Javascript. jQuery does a bunch of things one of which is to make it easy to add, modify and remove items from our DOM. 70% of websites use jQuery. For this app, what we want to do is add sections to our shopping list after someone adds a grocery item to the input box and then taps the button. So when someone taps the button, we'll add a new section to the shopping list section, one section for each item added. Those items will be children to shopping list, which is a child to list-content. Speaker notes
  • 23. "Grabbing" a section directly $('.shopping-list') jQuery always starts with this Element to grab CrossCamp.us Events bit.ly/web-app-la 12
  • 24. jQuery makes it really easy to add, change, and remove sections from our HTML. In this case we want to add to a section. The first thing we must do is to tell the computer which section we want to grab. In jQuery, the first thing we'll do is start our line of code with a "$". This tells the computer we're writing a jQuery command. Then inside the parentheses, we add the "class" of the section we want to grab. So in this case, "shopping-list" but starting with a ".". Speaker notes
  • 26. NOTE: All lines for the walkthrough are accessible in the Javascript tab of the demo. Once we grab the right section, we can then use jQuery to perform some action: to add, change, or remove, that section. Lets start by seeing how we can use jQuery to add and remove sections from our app. To add a section, the first thing we want to do is grab the section we want to add to. In this case, we want to add our shopping items to the shopping-list section. So we'll $('.shopping-list'). Then we want to perform an add action. One add action is .append. So lets say we want to add an apple to our shopping list we can do this: $('.shopping-list').append(" apples ") Now we've added this item and given it a label "item". To remove the items we added, we can then do this: $('.item').remove() Another thing we can use jQuery for is to change how a section looks. There are a number of ways to do this but the best way to do this is to define a new class in your CSS and then add or remove those "labels" or "classes" to sections. (enable the CSS tab for this section) Lets say we wanted to use jQuery to change the background color of our header section to pink. In this case, we'd define a new class called "pink". When we add "pink" as a class to the header section, background color will change to pink. $('header').addClass('pink') You can see here that in this case, header is not a class, but the name of a tag. To grab all sections with a specific HTML tag, we just give the tag name without the period in front. With jQuery, we can "chain" actions together. So once we grab a section, we can perform action after action on it in a particular order. Here's an example of using chaining to change the button. $('.add-item').text("Add Shopping Item").css("background", "pink") Finally, you can use jQuery to "traverse" or move up and down the HTML tree to select elements. The easiest way to grab an element is to grab it directly via it's class label. But in some cases, you might not know the class label you want to grab, just where it is in relation to another section. In those cases, you can "traverse" the tree to grab the right section before acting on it. Here's an example: Speaker notes
  • 28. Attaching an "Event Listener" http://www.loremipsum.com/example Wi-Fi: orem Ipsum PW: orem Ipsum L L CrossCamp.us Events bit.ly/web-app-la 14
  • 29. jQuery also lets us manage what happens when some event occurs, say when someone clicks on our button. We do this by attaching a "listener" on a section. A section would then listen, for say, a "click" and then execute the actions we tell it to once that section is clicked. The code will run every time it "hears" that event. The easiest way to attach a listener is when a section has been loaded. There are, however, ways to add listeners to sections that we expect will be loaded but haven't yet. In this case, we want to add an event listener to our button so when someone clicks on it, the text of the button changes and as well as the background color of the button. We see here that we've added a listener to add-item and then we grab add-item again. Instead of repeating ourselves, jQuery lets us refer to thing that was clicked by just saying event.currentTarget. This is an important concept that you'll build on later as you do more programming. Speaker notes
  • 30. Real developers use Google... a lot CrossCamp.us Events bit.ly/web-app-la 15
  • 31. Google is an everyday part of being a developer. A key part of becoming a developer is getting comfortable using Google to learn and look up things. The more you code, the more you will use Google, not the other way around. When you get stuck tonight, or whenever, make sure to Google it first! Speaker notes
  • 32. Let's work on the first step together http://bit.ly/tf-shopping-list http://www.loremipsum.com/example Wi-Fi: orem Ipsum PW: orem Ipsum L L CrossCamp.us Events bit.ly/web-app-la 16
  • 33. Alright, with that let's start building our app. On the left, you can see the files you'll be working on. The Readme will give you instructions. You'll be writing your code in client.js but referring to style.css and index.html. You shouldn't need to touch any of the other files. After you write your code, it will automatically be saved. At any point you can hit "Show Live" to see a live version of your app. Let's start the first step together. So in this first step, we're adding an event listener to the add-item button so when it's clicked, we're going to execute this code which should grab the text in the input box and add that item to our shopping list. The first thing we want to do is grab the value in our input box. How would we grab that element? (Ultimately fill in answer) Alright, once we grab that element, how might we pull out the text inside it? We haven't shown you this yet so I want you guys to Google "getting a value out of an input box with jQuery". Does anyone know the right function to use? (Ultimately fill in the answer) Alright so now we've stored the text from our input box in this variable listItem. So when we write listItem, that value will show up. We've combined that listItem with some HTML to add to our shopping list. Then once you're done with that, we want to zero out the text in our input box. Take it from here! (Assign TA's to different sections of class) Speaker notes
  • 35. Alright. Let's go over the solutions to the main challenges. The first task was to add HTML to the shopping list. We do that with the "prepend" or "append" action. In the parentheses we just give the computer the HTML we want to add. To zero-out the input box, we grab the item-input section and use the .val function to set the box to "". For the second challenge, the user will click on the X button. When we try to remove it, it just removed the X. What we need to do is "traverse" to the parent of the X which is the entire section and remove that. We can chain these actions together. Finally, when we click on the checkbox next to the item, we want to add or remove the "complete" class to add and remove the checkmark. We can do this pretty easily with the toggleClass function. Speaker notes
  • 36. Ways to keep learning More Structure Less Structure More SupportLess Support 18
  • 37. Our instructors help us write, teach, andOur instructors help us write, teach, and improve workshops & our curriculumimprove workshops & our curriculum 19
  • 38. In terms of structure, students should be asking what does the program look like - is it 1:1, 1:15 1:30? and what is the frequency? From our experience with students, we've learned that the most effective support is 1:1 - this way each student can get their specific questions and challenges addressed to keep learning and building. In our program, each student is working 1:1 with a mentor throughout the program and these mentoring sessions can be scheduled around your schedule, allowing students to have flexibility to learn how to program while maintaining their job Speaker notes
  • 39. Career prep and job-placement Liz Stephanie Our career services team has helped 93% of our grads begin jobs at companies like: 20
  • 40. Take a Thinkful tour! Talk to one of us to set something up ! Take a look through Thinkful's student platform to see if project-based, online learning is a good fit for you 👀 While we're at it, give us feedback on tonight's workshop. 21