SlideShare une entreprise Scribd logo
1  sur  65
JAVASCRIPT – AN INTRODUCTION 
SK Manvendra 
IntelliGrape Software
: AGENDA 
 History 
 The Three Layers of the Web 
 Programming with JavaScript 
 Document Access 
 Browser Access 
 Events 
 Animation 
 Forms 
 Go Pro 
 Errors and Debugging 
 Ajax 
 CoffeeScript 
 Knockout.js
: HISTORY 
 Created by Brendan Eich in 1995 for Netscape 
Navigator 2 release. Called Mocha and later 
LiveScript. 
 On release of 1.1 name was changed to 
JavaScript. 
 In 1997 JavaScript 1.1 was submitted to ECMA 
as a proposal. TC39 was assigned to standardize 
the syntax and semantics of the language. 
 TC39 released ECMA-262 known as 
ECMAScript. 
 ECMAScript is basis for all the JavaScript 
implementations.
: THE THREE LAYERS OF THE WEB 
 HTML for Content 
 <p class=“warning”>There is no <em>download 
link</em> on this page.</p> 
 CSS for Presentation 
 .warning { color: red; } 
 JavaScript for Behavior 
 <script type=“text/javascript”> 
window.alert(document.getElementsByClassName(“ 
warning”)[0].innerHTML); 
</script>
LIBRARIES 
JavaScript can be used to create reusable libraries. 
Some are: 
 Prototype 
 Script.aculo.us 
 Yahoo! User Interface Library 
 Dojo 
 jQuery 
 MooTools 
 Knockout
: PROGRAMMING WITH JAVASCRIPT 
Running a JavaScript program/script. 
There are two ways: 
 <script type=“text/javascript”> 
window.alert(“JavaScript”); 
</script> 
 <script type=“text/javascript” 
src=“myScript.js”></script> 
There was once a 
language attribute 
also in the script tag. 
i.e., 
language=“javascript 
1.5” or whatever 
 <script type=“text/javascript” src=“myScript.js” 
defer></script>
STATEMENTS, COMMENTS AND VARIABLES 
 Statements: Can be separated by new line or 
semicolon. 
 Comments: 2 types. 
 Single line: // Author: Manvendra SK 
 Multi line: /* Perhaps some lengthy 
license. */ 
 Variables: Overwrites when redefined. 2 types. 
 Local: Declared using var keyword. 
 Global: Declared without var keyword or attached to 
window object directly. i.e., window.someVar = 
“value”; 
 We use assignment opertor (=) to assign values.
VARIABLE DATA TYPES 
JavaScript is loosely typed language. While Java 
is strictly typed. 
 Numbers: 3, -3, 3.33, -3.33. These all are 
numbers in JS, whether it’s some integer or 
floating point number. 
 Operations: addition (+), subtraction (-), division 
(/), multiplication (*), modulo division (%) 
 Result is always promoted to float whenever possible. 
i.e., 5 / 3, 3 / 5, 0.5 * 5, 0.5 + 5 
 Assignment operators: +=, -=, /=, *=, %= 
 Special operators: increment (++), decrement (--)
STRINGS 
 Strings: Series/sequence of characters from zero 
to infinity. Can contain any character. Can be 
created using single or double quotes. 
 Use backslash () to escape special characters. 
i.e. “Hi this is “special” word here.” 
“Hi this is ttabt here.“ 
 Operations: Concatenation. 
i.e., “Some ” + “string.” 
“Some ” + someVar + “.” 
var name = “Manvendra ”; 
name = name + “SK”; or name += “SK”;
BOOLEANS 
 Booleans: Are you saying true or false. 
 Cases for true 
 “<1 space here>”, “string”, “undefined”, 1, 2, 3, -3, -2, -1, 
true; all represents true value. 
 Cases for false 
 “<empty string>”, undefined, null, void(0), 0, false; all 
represents false value. 
 Universal checking program: 
 <any value> ? “True” : “False”;
ARRAYS 
 Arrays: To hold a collection of items together. 
Can store any data types together in single array. 
i.e., var array = [1, {“k”: “v”}, 2.3, [“another”, 
“array”]]; 
 2 types: Single dimensional and Multi 
dimensional (array of array(s)). 
i.e., var array = [“1st”, “2nd”, “3rd”]; 
var arrayM = [[“1st”], [“2nd”], [“3rd”]]; 
 Accessing values stored in array: We use what is 
called index which is some integer ranges from 0 
to array’s length - 1.
ACCESSING ARRAYS 
 Accessing Single dimensional array: 
i.e., array[0]; // 1st 
array[1]; // 2nd 
array[2]; // You guess here. 
 Accessing Multi dimensional array: 
i.e., arrayM[0]; // [“1st”] 
arrayM[0][0]; // 1st.
ASSOCIATIVE ARRAYS 
 Associative Arrays: Kind of Java Maps. 
Remember the Key-Value pairs? 
i.e., var pincodes = []; 
pincodes[“khanpur”] = 110062; 
pincodes[“badarpur”] = 110044; 
pincodes[“saket”] = 110017; 
 Accessing Associative arrays: 
i.e., pincodes[“saket”]; // 110017 
pincodes[“badarpur”]; // You guess here. 
 Associative arrays are actually Objects!
CONTROLLING PROGRAM FLOW 
 Conditions: Making decisions. 
 if statement: Expects a boolean expression. 
Expression is combination of values, variable 
references, function calls and operators that evaluates 
to some value. 
 Some comparison operators that we can use are: 
less than (<), greater than (>), less than 
equal to (<=), greater than equal to (>=), 
equals to (==), not equals to (!=), not (!) 
 Multiple conditions operators: and (&&), or (||)
IF STATEMENTS 
 if-else statement: if condition is false then execute the 
else block. 
 else-if statements: It’s not reverse of the if-else. It just 
says if condition false then check this (else-if) 
condition. 
 How it looks like: 
i.e., if (condition) { 
// Some true code 
} else if (condition) { 
// Some 2nd true code 
} else { 
// Some false code 
}
LOOPS 
 Loops: Minimizing repetition 
 while loop: Simplest loop. While condition is true 
run the code. Condition can be any expression. 
 do-while loop: Runs at least once, as condition is 
evaluated after running the loop body. As always 
condition can be any expression. 
 for loop: Succinct all the above! 
 All the loops must consist three things: 
Incrementer, conditional expression, logic to 
increase the incrementer – so that condition 
eventually turns to false.
LOOPS FACES 
 How these look like?: 
 while loop: i.e., while (condition) { 
// Run the code 
} 
 do-while loop: i.e., do { 
// Run the code 
} while (condition) 
 for loop: i.e., for (declaration; condition; action) { 
// Run the code 
}
FUNCTIONS: WRITING CODE FOR LATER 
 If we want to re-run some code again and again 
from different places, then put that code in a 
function and call this function. 
 Functions are like little packages of JavaScript 
code waiting to be called into action. 
 Some predefined functions are alert(), prompt() 
and confirm(). These all are available on the 
top level window object. 
 Functions can return values. Values returned by 
predefined window functions are: undefined, 
user input string or empty string or null, 
true or false.
MY FUNCTIONS 
 Writing your own functions: 
i.e., function sayHi() { 
alert(“Hi”); 
} 
 Calling functions: i.e., sayHi(); 
Parentheses are 
needed to call the 
functions.
ARGUMENTS: PASSING DATA TO 
FUNCTIONS 
 Arguments or parameters: When a function 
expects something then it’s called a parameters. 
While we pass the expected data to a function 
then it’s called arguments. 
 Declaring parameters: 
i.e., function sayHi(name) { 
alert(“Hi ” + name); 
} 
 Calling function with arguments: 
i.e., sayHi(“Manvendra”); 
 Functions can contain any number of 
parameters.
A SECRET ARRAY 
 arguments array: Functions have one secret. 
They contain the arguments array. This array 
contains all the arguments passed to the 
function. 
i.e., function poll() { 
var affirmative = arguments[0]; 
var negative = arguments[1]; 
} 
// Calling the function 
poll(“affirmative”, “negative”);
RETURN AND SCOPE 
 Returning: As we know functions can return the 
values. We use return statement to return 
something. 
i.e., function sayHi(name) { 
return “Hi ” + name; 
} 
 Scope: Can be local or global. Ensure functions 
always declare variables using the var keyword 
or else they will look for it in global scope and 
will modify them.
I HAVE ANOTHER FACE 
 Alternate function syntax: 
i.e., var sayHi = function() { 
alert(“Hi”); 
}
OBJECTS 
 Objects exist as a way of organizing variables 
and functions into logical groups. If we create 
objects to organize some variables and functions 
then the terminology changes slightly, now they 
are called properties and methods respectively. 
 We have used the objects in this presentation. 
Where? Didn’t you use arrays? Array is an object 
of JavaScript. Same array can be created as 
follows: i.e., var array = new Array(1, 2, 3); 
 This is called instantiation of object using the 
new keyword. 
 Built-in objects: String, Date, Math, Boolean, 
Number, RegExp, Object, Array
CREATE YOUR OWN OBJECTS 
 We can create our own objects to encapsulate the 
data and logic. i.e., 
var Person = new Object(); 
Person.name = “Manvendra SK”; 
Person.age = 23; 
Person.speakName = function() { 
alert(“Hello, I’m ” + this.name); 
}; 
Person.speakName();
ALTERNTAE SYNTAX 
 Alternate objects syntax: i.e., 
var Person = { 
name: “Manvendra SK”, 
age: 23, 
speakName: function() { 
alert(“Hello, I’m ” + this.name); 
} 
}; 
Person.speakName(); 
It’s JSON 
(JavaScript 
Object 
Notation) 
syntax
CREATING REAL OBJECTS 
 We can create objects those can be instantiated 
using the new keyword. 
var Person = function(name, age) { 
this.name = name; 
this.age = age; 
}; 
Person.prototype.speakName = function() { 
alert(“Hello, I’m ” + this.name); 
};
USING REAL OBJECTS 
var manvendra = new Person(“Manvendra”, 23); 
manvendra.speakName(); 
 This method of creating objects is called 
Prototype pattern.
: DOCUMENT ACCESS 
 Document Object Model: Mapping your HTML. 
The browser stores its interpreted HTML code as 
a structure of JavaScript objects, called DOM. 
 DOM consists of Nodes. There are currently 12 
types of nodes. Most of which we use are 
ELEMENT_NODE (1), ATTRIBUTE_NODE 
(2), TEXT_NODE (3). 
 We can use the nodeType property to check the 
type of the node. i.e., 
document.getElementsByTagName(“h1”)[0].node 
Type; // 1
 DOM Structure: 
html 
ELEMENT_NODE 
head 
ELEMENT_NODE 
title 
ELEMENT_NODE 
Some title 
TEXT_NODE 
body 
ELEMENT_NODE 
p 
ELEMENT_NODE 
a 
ELEMENT_NODE 
some link 
TEXT_NODE 
href 
ATTRIBUTE_NODE 
Go to 
TEXT_NODE
GRAND NODE 
 In fact there is an universal node. document 
node. This node exists even if the document is 
blank. 
document 
ELEMENT_NODE 
Rest of 
DOM
DOM MANIPLUATION 
 Access elements: Use document.get*() methods. 
 Alter properties. It depends on the type of node. 
 If it’s some html node like div, h1, span, label then 
you would set its innerHTML property or sometimes 
textContent property, if element is li. 
 If it’s some input element then you would set its 
value property. 
 Traversal: We use nextSibling, 
previousSibling, parent, children etc. 
properties.
MANIPLUATING STYLE AND CLASSES 
 Altering style: We can use the style property to 
alter the style of any element. i.e., 
document.getElementsByTagName 
(“body”)[0].style.background = “#ddd”; 
document.getElementByTagName(“label”)[0] 
.style.position = “absolute”; 
document.getElementByTagName(“label”)[0] 
.style.left = “300px”; 
 We can also use className property to access or 
set a CSS class directly. It’s directly available on 
the element.
: BROWSER ACCESS 
 Browser Object Model: It targets the browser 
environment rather than the document. It offers 
some objects allow us to handle the browser by 
our script. 
 window 
 location 
 navigator 
 screen 
 history
: EVENTS 
 JS enables us to write scripts that are triggered 
by events that occur during the user’s 
interaction with the page, like clicking a 
hyperlink, scrolling the browser’s viewport, 
typing a value into a form field or submitting a 
form. 
 DOM Levels: 
 DOM Level 1 
 DOM Level 2 
There is also DOM 
Level 3
EVENT HANDLERS 
 Simplest way to run JS code in response to an 
event is to use an event handler (function). 
Event 
handler 
 How to attach?: element.onevent = eventHandler 
Note: I didn’t provide 
parentheses to eventHandler
DEFAULT ACTIONS AND THIS 
 Default actions: Things the browser normally 
does in response to events. 
 How to prevent?: return false or true to cancel 
or let the default action follow. 
 this keyword. this is an object reference that you 
get when executing a method on an object. When 
browser invokes the event handler on some event 
for an element, then within the event handler 
this points to the element on which event is 
fired. 
We can’t set the value of this object.
EVENT LISTENERS 
 What’s wrong with event handlers? You can’t 
assign multiple event handlers to an event. i.e., 
element.onclick = firstHandler; 
element.onclick = secondHandler; 
 Now only secondHandler will be called, as it has 
replaced the firstHandler. 
 However we can assign as many event listeners 
as we want to an event of an element, and all of 
them will be called.
IT’S LIKE HUB 
 As we can see we can plugin many event listeners 
at once. 
Event 
listener 
Event 
listener 
Event 
listener
ATTACHING EVENT LISTENERS 
 How to attach event listener?: i.e., 
element.addEventListener(“event”, 
eventListener, false); 
for IE, element.attachEvent(“onevent”, 
eventListener); 
Object detection: 
typeof element.property != “undefined”
EVENT PARAMETER 
 Event parameter of the listener: Browser 
automatically passes the event parameter to the 
event listener function. i.e., 
function someClickEventListener (event) { 
// Use event argument’s methods 
} 
 event parameter has some important methods. 
Some of them are: preventDefault() and 
stopPropagation().
EVENT OBJECT 
 IE has its own way. If you remember IE doesn’t 
expect third argument. It means it also doesn’t 
pass event parameter to the event listener 
function. Then how to access it? 
 In IE there is a global event object, which is 
window.event. And it has equivalent properties 
like the event parameter which are: 
returnValue which we can set to false, and 
cancelBuble which we can set to true. These 
two settings achieves the same effect as its event 
parameter counterpart’s methods.
DETACHING EVENT LISTENERS 
 How to detach event listener: i.e., 
element.removeEventListener(“event”, 
eventListener, false); 
for IE, element.detachListener(“onevent”, 
eventListener);
EVENT PROPAGATION 
 What is event propagation? 
 Event propagation runs in three phases: 
 Capture phase: Document to element. 
 Target phase: Element which triggered the event. 
 Bubbling phase: Element to Document.
: ANIMATION 
 Animation is nothing but the frames those comes 
one by one and complete in some time from start 
to end. We need some way to schedule the frames 
to come one after other. 
 JavaScript provides two methods setTimeout 
and setInterval both of which are available on 
window object. These two methods comes with 
their companions clearTimeout and 
clearInterval respectively. 
 setTimeout calls the task only once, while 
setInterval calls the task repeatedly.
USING SET* METHODS 
 How to use?: Both methods have same syntax. 
i.e., 
window.setTimeout(callback, timeout); 
 Both methods return a timer’s id which (timer) 
they have created. It’s where we use the clear* 
methods, passing them this timer’s id. 
Callback is a function that is called by the script 
that expect it as a parameter upon its task 
completion. It means functions can be passed as 
parameters like normal variables. Just pass 
function name without parentheses.
: FORMS 
 Forms are there to collect the data. And 
JavaScript is known for its form validations. But 
as we know JavaScript is more than that. 
However forms are still integral part. Whenever 
there is a single input box it must be contained 
inside a form. 
 Some DOM Methods for HTML Form Controls 
Method Element(s) Description 
blur input, select, 
textarea 
Removes keyboard 
focus 
click input Simulates a mouse 
click 
focus input, select, 
textarea 
Gives keyboard 
focus
 …Continued 
reset form Reset all control’s 
value to default 
select input, textarea Selects all the 
contents 
submit form Submits the form 
without triggering 
submit event 
 Some DOM Properties for HTML Form Controls 
Property Element(s) Description 
elements form A node list 
containing all 
the form
 …Continued 
checked input True only for 
checkbox and radio 
inputs if checked 
else false 
disabled button, input, 
optgroup, option, 
select, textarea 
While true controls 
is unavailable to 
user 
form button, input, 
option, select, 
textarea 
A reference to the 
form containing 
this control 
index option Index of this option 
control within the 
select control that 
contains it (0 for 
first)
 …Continued 
options select A node list 
containing all the 
options controls 
selected option True if this option 
is selected else 
false. 
selectedIndex select Index of the 
currently selected 
option (0 for the 
first) 
value button, input, 
option, select, 
textarea 
Current value of 
this control, as it 
would be 
submitted to the 
server
 Some DOM Events for HTML Form Controls 
Event Element(s) Triggered when… 
change input, select, 
textarea 
Control lost focus 
after its value has 
changed 
select input, textarea User has selected 
some text 
submit form User has requested 
to submit the form
HANDLING THE SUBMIT EVENT 
 How to handle the submit event of the form?: i.e., 
form.addEventListener(“submit”, 
submitListener, false); 
For IE, form.attachEvent(“onsubmit”, 
submitListener)
Go 
Pro
: Errors and Debugging 
 Every browser has its own way for JavaScript 
error messages. As each browser has different 
implementation of the language. Most sensible 
are Firefox’s. 
 Three kinds of error can occur in JavaScript. 
 Syntax Errors: Occur when your code violates the 
fundamental rules (or syntax) of the language. 
 Runtime Errors: Occur when a valid piece of code 
tries to do something that it’s not allowed to do, or 
that is impossible. 
 Logic Errors: Occur when there are bugs in our code. 
And we don’t get intended results from the script.
DEBUGGING TOOLS 
 There are JavaScript debugging tools built right 
into the browsers. 
 Some are: 
 Firefox: Ctrl+Shift+I 
 Chrome: Ctrl+Shift+I 
 Opera: Ctrl+Shift+I 
 Safari: Ctrl+Alt+I 
 IE: F12 
 Firefox’s Firebug: F12 
 Inside these tools we can execute our script step 
by step, watch for variables values and more.
: AJAX 
 AJAX acronym for Asynchronous JavaScript And 
XML. 
 This technology is used for asynchronous 
information transfer between browser and server 
in bite-size chunks. 
 It is supported using the XMLHttpRequest 
object built right into the browser. 
 Firstly implemented by IE 5 and 6 and they did 
using the ActiveX object. 
 IE 7+ don’t use ActiveX object, instead they use 
XMLHttpRequest.
INITIALIZE 
 How to initialize?: i.e., 
var requester = new XMLHttpRequest(); 
For IE, 
var requester = new 
ActiveXObject(“Microsoft.XMLHTTP”);
PROPER INSTANTIATION 
 Example of instantiating the XMLHttpRequest: 
try { 
var requester = new XMLHttpRequest(); 
} catch (error) { 
try { 
var requester = new 
ActiveXObject(“Microsoft.XMLHTTP”); 
} catch (error) { 
var requester = null; 
} 
}
USING THE XHR 
 Using the XMLHttpRequest: 
requester.setRequestHeader(“Content-Type”, 
“application/x-www-form-urlencoded”); // Optional 
requester.open(“GET”, “/url.xml”, true); 
requester.send(null); 
requester.onreadystatechange = function() { 
// Use requester.readyState property, which 
is 0 to 4, uninitialized, loading, loaded, interactive, 
complete. 
// Also now check requester.state property, 
which contains HTTP codes of response. For 
success use 200 or 304, other are failures. 
}
READ THE DATA FROM XHR 
 Where is the data: 
 responseXML: If the server responsed with content-type 
set to text/xml then we have DOM. We can 
traverse it as usual to get the data. It also populates 
the responseText property, just for an alternative. 
 responseText: If the server responsed with the 
content-type set to text/plain or text/html then we 
have single string as the data. But now the 
responseXML will be empty.
: COFFEESCRIPT 
 CoffeeScript is a new way to write tricky and 
lengthy JavaScript easily and intuitively. 
http://coffeescript.org/
: KNOCKOUT.JS 
 Knockout is a MVVM (Model-View-ViewModel) 
library. MVVM is an extension of MVC, originally 
created by Microsoft. Knockout allows us to do UI 
bindings declaratively rather than using JS. 
http://knockoutjs.com/
: EXERCISES 
 Prompt for amount, interest rate and number of 
years. Now calculate the Simple Interest using 
the values, and show in alert box. 
 Check if any given string is palindrome. Use 
input element to get the string. 
 Calculate the area of circle. 
 On click of input button ask the user name and 
display it inside a input text box. 
 Copy text of first text box to second text box on 
every change of value in first text box.
 …Continued 
 Allow submission of form only if the user has 
entered his name (should not be blank) and age 
(must be greater than or equals to 18). 
 Change the color of a div element on mouse over 
and restore it on mouse out. 
 Create a Clock object and encapsulate methods 
like start and stop for starting and stopping the 
clock. Implementation must use Prototype 
pattern and event listener mechanism. Display 
the clock in some div or span or p element.

Contenu connexe

Tendances

Tendances (20)

Javascript
JavascriptJavascript
Javascript
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
 
Lab #2: Introduction to Javascript
Lab #2: Introduction to JavascriptLab #2: Introduction to Javascript
Lab #2: Introduction to Javascript
 
Java script
Java scriptJava script
Java script
 
Intro to HTML and CSS basics
Intro to HTML and CSS basicsIntro to HTML and CSS basics
Intro to HTML and CSS basics
 
Java Script ppt
Java Script pptJava Script ppt
Java Script ppt
 
3. Java Script
3. Java Script3. Java Script
3. Java Script
 
Introduction to JavaScript
Introduction to JavaScriptIntroduction to JavaScript
Introduction to JavaScript
 
Introduction to HTML and CSS
Introduction to HTML and CSSIntroduction to HTML and CSS
Introduction to HTML and CSS
 
Javascript
JavascriptJavascript
Javascript
 
JavaScript - Chapter 3 - Introduction
 JavaScript - Chapter 3 - Introduction JavaScript - Chapter 3 - Introduction
JavaScript - Chapter 3 - Introduction
 
Javascript
JavascriptJavascript
Javascript
 
Java script
Java scriptJava script
Java script
 
Javascript functions
Javascript functionsJavascript functions
Javascript functions
 
JavaScript: Variables and Functions
JavaScript: Variables and FunctionsJavaScript: Variables and Functions
JavaScript: Variables and Functions
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScript
 
cascading style sheet ppt
cascading style sheet pptcascading style sheet ppt
cascading style sheet ppt
 
Js ppt
Js pptJs ppt
Js ppt
 

En vedette

En vedette (7)

Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]
 
Introduction to JavaScript
Introduction to JavaScriptIntroduction to JavaScript
Introduction to JavaScript
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
Understanding the Computer System
Understanding the Computer SystemUnderstanding the Computer System
Understanding the Computer System
 
Dynamic HTML (DHTML)
Dynamic HTML (DHTML)Dynamic HTML (DHTML)
Dynamic HTML (DHTML)
 
C++ ppt
C++ pptC++ ppt
C++ ppt
 
Java script ppt
Java script pptJava script ppt
Java script ppt
 

Similaire à JavaScript - An Introduction

Handout - Introduction to Programming
Handout - Introduction to ProgrammingHandout - Introduction to Programming
Handout - Introduction to ProgrammingCindy Royal
 
JavaScript(Es5) Interview Questions & Answers
JavaScript(Es5)  Interview Questions & AnswersJavaScript(Es5)  Interview Questions & Answers
JavaScript(Es5) Interview Questions & AnswersRatnala Charan kumar
 
Getting started with ES6
Getting started with ES6Getting started with ES6
Getting started with ES6Nitay Neeman
 
Scala for Java Programmers
Scala for Java ProgrammersScala for Java Programmers
Scala for Java ProgrammersEric Pederson
 
Introduction to CoffeeScript
Introduction to CoffeeScriptIntroduction to CoffeeScript
Introduction to CoffeeScriptStalin Thangaraj
 
11. session 11 functions and objects
11. session 11   functions and objects11. session 11   functions and objects
11. session 11 functions and objectsPhúc Đỗ
 
Java script introducation & basics
Java script introducation & basicsJava script introducation & basics
Java script introducation & basicsH K
 
Scala uma poderosa linguagem para a jvm
Scala   uma poderosa linguagem para a jvmScala   uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvmIsaias Barroso
 
Intro to ES6 and why should you bother !
Intro to ES6 and why should you bother !Intro to ES6 and why should you bother !
Intro to ES6 and why should you bother !Gaurav Behere
 

Similaire à JavaScript - An Introduction (20)

Handout - Introduction to Programming
Handout - Introduction to ProgrammingHandout - Introduction to Programming
Handout - Introduction to Programming
 
JavaScript(Es5) Interview Questions & Answers
JavaScript(Es5)  Interview Questions & AnswersJavaScript(Es5)  Interview Questions & Answers
JavaScript(Es5) Interview Questions & Answers
 
Scala in Places API
Scala in Places APIScala in Places API
Scala in Places API
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Javascript
JavascriptJavascript
Javascript
 
Java Script Introduction
Java Script IntroductionJava Script Introduction
Java Script Introduction
 
Java Basics 1.pptx
Java Basics 1.pptxJava Basics 1.pptx
Java Basics 1.pptx
 
Getting started with ES6
Getting started with ES6Getting started with ES6
Getting started with ES6
 
Scala for Java Programmers
Scala for Java ProgrammersScala for Java Programmers
Scala for Java Programmers
 
Introduction to CoffeeScript
Introduction to CoffeeScriptIntroduction to CoffeeScript
Introduction to CoffeeScript
 
JavaScript.pptx
JavaScript.pptxJavaScript.pptx
JavaScript.pptx
 
11. session 11 functions and objects
11. session 11   functions and objects11. session 11   functions and objects
11. session 11 functions and objects
 
Java tutorial PPT
Java tutorial PPTJava tutorial PPT
Java tutorial PPT
 
Java tutorial PPT
Java tutorial  PPTJava tutorial  PPT
Java tutorial PPT
 
Java script
Java scriptJava script
Java script
 
Java script introducation & basics
Java script introducation & basicsJava script introducation & basics
Java script introducation & basics
 
Reversing JavaScript
Reversing JavaScriptReversing JavaScript
Reversing JavaScript
 
Scala uma poderosa linguagem para a jvm
Scala   uma poderosa linguagem para a jvmScala   uma poderosa linguagem para a jvm
Scala uma poderosa linguagem para a jvm
 
Intro to ES6 and why should you bother !
Intro to ES6 and why should you bother !Intro to ES6 and why should you bother !
Intro to ES6 and why should you bother !
 
Scala idioms
Scala idiomsScala idioms
Scala idioms
 

Dernier

Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Lecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).pptLecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).pptesrabilgic2
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 

Dernier (20)

Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Lecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).pptLecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).ppt
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 

JavaScript - An Introduction

  • 1. JAVASCRIPT – AN INTRODUCTION SK Manvendra IntelliGrape Software
  • 2. : AGENDA  History  The Three Layers of the Web  Programming with JavaScript  Document Access  Browser Access  Events  Animation  Forms  Go Pro  Errors and Debugging  Ajax  CoffeeScript  Knockout.js
  • 3. : HISTORY  Created by Brendan Eich in 1995 for Netscape Navigator 2 release. Called Mocha and later LiveScript.  On release of 1.1 name was changed to JavaScript.  In 1997 JavaScript 1.1 was submitted to ECMA as a proposal. TC39 was assigned to standardize the syntax and semantics of the language.  TC39 released ECMA-262 known as ECMAScript.  ECMAScript is basis for all the JavaScript implementations.
  • 4. : THE THREE LAYERS OF THE WEB  HTML for Content  <p class=“warning”>There is no <em>download link</em> on this page.</p>  CSS for Presentation  .warning { color: red; }  JavaScript for Behavior  <script type=“text/javascript”> window.alert(document.getElementsByClassName(“ warning”)[0].innerHTML); </script>
  • 5. LIBRARIES JavaScript can be used to create reusable libraries. Some are:  Prototype  Script.aculo.us  Yahoo! User Interface Library  Dojo  jQuery  MooTools  Knockout
  • 6. : PROGRAMMING WITH JAVASCRIPT Running a JavaScript program/script. There are two ways:  <script type=“text/javascript”> window.alert(“JavaScript”); </script>  <script type=“text/javascript” src=“myScript.js”></script> There was once a language attribute also in the script tag. i.e., language=“javascript 1.5” or whatever  <script type=“text/javascript” src=“myScript.js” defer></script>
  • 7. STATEMENTS, COMMENTS AND VARIABLES  Statements: Can be separated by new line or semicolon.  Comments: 2 types.  Single line: // Author: Manvendra SK  Multi line: /* Perhaps some lengthy license. */  Variables: Overwrites when redefined. 2 types.  Local: Declared using var keyword.  Global: Declared without var keyword or attached to window object directly. i.e., window.someVar = “value”;  We use assignment opertor (=) to assign values.
  • 8. VARIABLE DATA TYPES JavaScript is loosely typed language. While Java is strictly typed.  Numbers: 3, -3, 3.33, -3.33. These all are numbers in JS, whether it’s some integer or floating point number.  Operations: addition (+), subtraction (-), division (/), multiplication (*), modulo division (%)  Result is always promoted to float whenever possible. i.e., 5 / 3, 3 / 5, 0.5 * 5, 0.5 + 5  Assignment operators: +=, -=, /=, *=, %=  Special operators: increment (++), decrement (--)
  • 9. STRINGS  Strings: Series/sequence of characters from zero to infinity. Can contain any character. Can be created using single or double quotes.  Use backslash () to escape special characters. i.e. “Hi this is “special” word here.” “Hi this is ttabt here.“  Operations: Concatenation. i.e., “Some ” + “string.” “Some ” + someVar + “.” var name = “Manvendra ”; name = name + “SK”; or name += “SK”;
  • 10. BOOLEANS  Booleans: Are you saying true or false.  Cases for true  “<1 space here>”, “string”, “undefined”, 1, 2, 3, -3, -2, -1, true; all represents true value.  Cases for false  “<empty string>”, undefined, null, void(0), 0, false; all represents false value.  Universal checking program:  <any value> ? “True” : “False”;
  • 11. ARRAYS  Arrays: To hold a collection of items together. Can store any data types together in single array. i.e., var array = [1, {“k”: “v”}, 2.3, [“another”, “array”]];  2 types: Single dimensional and Multi dimensional (array of array(s)). i.e., var array = [“1st”, “2nd”, “3rd”]; var arrayM = [[“1st”], [“2nd”], [“3rd”]];  Accessing values stored in array: We use what is called index which is some integer ranges from 0 to array’s length - 1.
  • 12. ACCESSING ARRAYS  Accessing Single dimensional array: i.e., array[0]; // 1st array[1]; // 2nd array[2]; // You guess here.  Accessing Multi dimensional array: i.e., arrayM[0]; // [“1st”] arrayM[0][0]; // 1st.
  • 13. ASSOCIATIVE ARRAYS  Associative Arrays: Kind of Java Maps. Remember the Key-Value pairs? i.e., var pincodes = []; pincodes[“khanpur”] = 110062; pincodes[“badarpur”] = 110044; pincodes[“saket”] = 110017;  Accessing Associative arrays: i.e., pincodes[“saket”]; // 110017 pincodes[“badarpur”]; // You guess here.  Associative arrays are actually Objects!
  • 14. CONTROLLING PROGRAM FLOW  Conditions: Making decisions.  if statement: Expects a boolean expression. Expression is combination of values, variable references, function calls and operators that evaluates to some value.  Some comparison operators that we can use are: less than (<), greater than (>), less than equal to (<=), greater than equal to (>=), equals to (==), not equals to (!=), not (!)  Multiple conditions operators: and (&&), or (||)
  • 15. IF STATEMENTS  if-else statement: if condition is false then execute the else block.  else-if statements: It’s not reverse of the if-else. It just says if condition false then check this (else-if) condition.  How it looks like: i.e., if (condition) { // Some true code } else if (condition) { // Some 2nd true code } else { // Some false code }
  • 16. LOOPS  Loops: Minimizing repetition  while loop: Simplest loop. While condition is true run the code. Condition can be any expression.  do-while loop: Runs at least once, as condition is evaluated after running the loop body. As always condition can be any expression.  for loop: Succinct all the above!  All the loops must consist three things: Incrementer, conditional expression, logic to increase the incrementer – so that condition eventually turns to false.
  • 17. LOOPS FACES  How these look like?:  while loop: i.e., while (condition) { // Run the code }  do-while loop: i.e., do { // Run the code } while (condition)  for loop: i.e., for (declaration; condition; action) { // Run the code }
  • 18. FUNCTIONS: WRITING CODE FOR LATER  If we want to re-run some code again and again from different places, then put that code in a function and call this function.  Functions are like little packages of JavaScript code waiting to be called into action.  Some predefined functions are alert(), prompt() and confirm(). These all are available on the top level window object.  Functions can return values. Values returned by predefined window functions are: undefined, user input string or empty string or null, true or false.
  • 19. MY FUNCTIONS  Writing your own functions: i.e., function sayHi() { alert(“Hi”); }  Calling functions: i.e., sayHi(); Parentheses are needed to call the functions.
  • 20. ARGUMENTS: PASSING DATA TO FUNCTIONS  Arguments or parameters: When a function expects something then it’s called a parameters. While we pass the expected data to a function then it’s called arguments.  Declaring parameters: i.e., function sayHi(name) { alert(“Hi ” + name); }  Calling function with arguments: i.e., sayHi(“Manvendra”);  Functions can contain any number of parameters.
  • 21. A SECRET ARRAY  arguments array: Functions have one secret. They contain the arguments array. This array contains all the arguments passed to the function. i.e., function poll() { var affirmative = arguments[0]; var negative = arguments[1]; } // Calling the function poll(“affirmative”, “negative”);
  • 22. RETURN AND SCOPE  Returning: As we know functions can return the values. We use return statement to return something. i.e., function sayHi(name) { return “Hi ” + name; }  Scope: Can be local or global. Ensure functions always declare variables using the var keyword or else they will look for it in global scope and will modify them.
  • 23. I HAVE ANOTHER FACE  Alternate function syntax: i.e., var sayHi = function() { alert(“Hi”); }
  • 24. OBJECTS  Objects exist as a way of organizing variables and functions into logical groups. If we create objects to organize some variables and functions then the terminology changes slightly, now they are called properties and methods respectively.  We have used the objects in this presentation. Where? Didn’t you use arrays? Array is an object of JavaScript. Same array can be created as follows: i.e., var array = new Array(1, 2, 3);  This is called instantiation of object using the new keyword.  Built-in objects: String, Date, Math, Boolean, Number, RegExp, Object, Array
  • 25. CREATE YOUR OWN OBJECTS  We can create our own objects to encapsulate the data and logic. i.e., var Person = new Object(); Person.name = “Manvendra SK”; Person.age = 23; Person.speakName = function() { alert(“Hello, I’m ” + this.name); }; Person.speakName();
  • 26. ALTERNTAE SYNTAX  Alternate objects syntax: i.e., var Person = { name: “Manvendra SK”, age: 23, speakName: function() { alert(“Hello, I’m ” + this.name); } }; Person.speakName(); It’s JSON (JavaScript Object Notation) syntax
  • 27. CREATING REAL OBJECTS  We can create objects those can be instantiated using the new keyword. var Person = function(name, age) { this.name = name; this.age = age; }; Person.prototype.speakName = function() { alert(“Hello, I’m ” + this.name); };
  • 28. USING REAL OBJECTS var manvendra = new Person(“Manvendra”, 23); manvendra.speakName();  This method of creating objects is called Prototype pattern.
  • 29. : DOCUMENT ACCESS  Document Object Model: Mapping your HTML. The browser stores its interpreted HTML code as a structure of JavaScript objects, called DOM.  DOM consists of Nodes. There are currently 12 types of nodes. Most of which we use are ELEMENT_NODE (1), ATTRIBUTE_NODE (2), TEXT_NODE (3).  We can use the nodeType property to check the type of the node. i.e., document.getElementsByTagName(“h1”)[0].node Type; // 1
  • 30.  DOM Structure: html ELEMENT_NODE head ELEMENT_NODE title ELEMENT_NODE Some title TEXT_NODE body ELEMENT_NODE p ELEMENT_NODE a ELEMENT_NODE some link TEXT_NODE href ATTRIBUTE_NODE Go to TEXT_NODE
  • 31. GRAND NODE  In fact there is an universal node. document node. This node exists even if the document is blank. document ELEMENT_NODE Rest of DOM
  • 32. DOM MANIPLUATION  Access elements: Use document.get*() methods.  Alter properties. It depends on the type of node.  If it’s some html node like div, h1, span, label then you would set its innerHTML property or sometimes textContent property, if element is li.  If it’s some input element then you would set its value property.  Traversal: We use nextSibling, previousSibling, parent, children etc. properties.
  • 33. MANIPLUATING STYLE AND CLASSES  Altering style: We can use the style property to alter the style of any element. i.e., document.getElementsByTagName (“body”)[0].style.background = “#ddd”; document.getElementByTagName(“label”)[0] .style.position = “absolute”; document.getElementByTagName(“label”)[0] .style.left = “300px”;  We can also use className property to access or set a CSS class directly. It’s directly available on the element.
  • 34. : BROWSER ACCESS  Browser Object Model: It targets the browser environment rather than the document. It offers some objects allow us to handle the browser by our script.  window  location  navigator  screen  history
  • 35. : EVENTS  JS enables us to write scripts that are triggered by events that occur during the user’s interaction with the page, like clicking a hyperlink, scrolling the browser’s viewport, typing a value into a form field or submitting a form.  DOM Levels:  DOM Level 1  DOM Level 2 There is also DOM Level 3
  • 36. EVENT HANDLERS  Simplest way to run JS code in response to an event is to use an event handler (function). Event handler  How to attach?: element.onevent = eventHandler Note: I didn’t provide parentheses to eventHandler
  • 37. DEFAULT ACTIONS AND THIS  Default actions: Things the browser normally does in response to events.  How to prevent?: return false or true to cancel or let the default action follow.  this keyword. this is an object reference that you get when executing a method on an object. When browser invokes the event handler on some event for an element, then within the event handler this points to the element on which event is fired. We can’t set the value of this object.
  • 38. EVENT LISTENERS  What’s wrong with event handlers? You can’t assign multiple event handlers to an event. i.e., element.onclick = firstHandler; element.onclick = secondHandler;  Now only secondHandler will be called, as it has replaced the firstHandler.  However we can assign as many event listeners as we want to an event of an element, and all of them will be called.
  • 39. IT’S LIKE HUB  As we can see we can plugin many event listeners at once. Event listener Event listener Event listener
  • 40. ATTACHING EVENT LISTENERS  How to attach event listener?: i.e., element.addEventListener(“event”, eventListener, false); for IE, element.attachEvent(“onevent”, eventListener); Object detection: typeof element.property != “undefined”
  • 41. EVENT PARAMETER  Event parameter of the listener: Browser automatically passes the event parameter to the event listener function. i.e., function someClickEventListener (event) { // Use event argument’s methods }  event parameter has some important methods. Some of them are: preventDefault() and stopPropagation().
  • 42. EVENT OBJECT  IE has its own way. If you remember IE doesn’t expect third argument. It means it also doesn’t pass event parameter to the event listener function. Then how to access it?  In IE there is a global event object, which is window.event. And it has equivalent properties like the event parameter which are: returnValue which we can set to false, and cancelBuble which we can set to true. These two settings achieves the same effect as its event parameter counterpart’s methods.
  • 43. DETACHING EVENT LISTENERS  How to detach event listener: i.e., element.removeEventListener(“event”, eventListener, false); for IE, element.detachListener(“onevent”, eventListener);
  • 44. EVENT PROPAGATION  What is event propagation?  Event propagation runs in three phases:  Capture phase: Document to element.  Target phase: Element which triggered the event.  Bubbling phase: Element to Document.
  • 45. : ANIMATION  Animation is nothing but the frames those comes one by one and complete in some time from start to end. We need some way to schedule the frames to come one after other.  JavaScript provides two methods setTimeout and setInterval both of which are available on window object. These two methods comes with their companions clearTimeout and clearInterval respectively.  setTimeout calls the task only once, while setInterval calls the task repeatedly.
  • 46. USING SET* METHODS  How to use?: Both methods have same syntax. i.e., window.setTimeout(callback, timeout);  Both methods return a timer’s id which (timer) they have created. It’s where we use the clear* methods, passing them this timer’s id. Callback is a function that is called by the script that expect it as a parameter upon its task completion. It means functions can be passed as parameters like normal variables. Just pass function name without parentheses.
  • 47. : FORMS  Forms are there to collect the data. And JavaScript is known for its form validations. But as we know JavaScript is more than that. However forms are still integral part. Whenever there is a single input box it must be contained inside a form.  Some DOM Methods for HTML Form Controls Method Element(s) Description blur input, select, textarea Removes keyboard focus click input Simulates a mouse click focus input, select, textarea Gives keyboard focus
  • 48.  …Continued reset form Reset all control’s value to default select input, textarea Selects all the contents submit form Submits the form without triggering submit event  Some DOM Properties for HTML Form Controls Property Element(s) Description elements form A node list containing all the form
  • 49.  …Continued checked input True only for checkbox and radio inputs if checked else false disabled button, input, optgroup, option, select, textarea While true controls is unavailable to user form button, input, option, select, textarea A reference to the form containing this control index option Index of this option control within the select control that contains it (0 for first)
  • 50.  …Continued options select A node list containing all the options controls selected option True if this option is selected else false. selectedIndex select Index of the currently selected option (0 for the first) value button, input, option, select, textarea Current value of this control, as it would be submitted to the server
  • 51.  Some DOM Events for HTML Form Controls Event Element(s) Triggered when… change input, select, textarea Control lost focus after its value has changed select input, textarea User has selected some text submit form User has requested to submit the form
  • 52. HANDLING THE SUBMIT EVENT  How to handle the submit event of the form?: i.e., form.addEventListener(“submit”, submitListener, false); For IE, form.attachEvent(“onsubmit”, submitListener)
  • 54. : Errors and Debugging  Every browser has its own way for JavaScript error messages. As each browser has different implementation of the language. Most sensible are Firefox’s.  Three kinds of error can occur in JavaScript.  Syntax Errors: Occur when your code violates the fundamental rules (or syntax) of the language.  Runtime Errors: Occur when a valid piece of code tries to do something that it’s not allowed to do, or that is impossible.  Logic Errors: Occur when there are bugs in our code. And we don’t get intended results from the script.
  • 55. DEBUGGING TOOLS  There are JavaScript debugging tools built right into the browsers.  Some are:  Firefox: Ctrl+Shift+I  Chrome: Ctrl+Shift+I  Opera: Ctrl+Shift+I  Safari: Ctrl+Alt+I  IE: F12  Firefox’s Firebug: F12  Inside these tools we can execute our script step by step, watch for variables values and more.
  • 56. : AJAX  AJAX acronym for Asynchronous JavaScript And XML.  This technology is used for asynchronous information transfer between browser and server in bite-size chunks.  It is supported using the XMLHttpRequest object built right into the browser.  Firstly implemented by IE 5 and 6 and they did using the ActiveX object.  IE 7+ don’t use ActiveX object, instead they use XMLHttpRequest.
  • 57. INITIALIZE  How to initialize?: i.e., var requester = new XMLHttpRequest(); For IE, var requester = new ActiveXObject(“Microsoft.XMLHTTP”);
  • 58. PROPER INSTANTIATION  Example of instantiating the XMLHttpRequest: try { var requester = new XMLHttpRequest(); } catch (error) { try { var requester = new ActiveXObject(“Microsoft.XMLHTTP”); } catch (error) { var requester = null; } }
  • 59. USING THE XHR  Using the XMLHttpRequest: requester.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”); // Optional requester.open(“GET”, “/url.xml”, true); requester.send(null); requester.onreadystatechange = function() { // Use requester.readyState property, which is 0 to 4, uninitialized, loading, loaded, interactive, complete. // Also now check requester.state property, which contains HTTP codes of response. For success use 200 or 304, other are failures. }
  • 60. READ THE DATA FROM XHR  Where is the data:  responseXML: If the server responsed with content-type set to text/xml then we have DOM. We can traverse it as usual to get the data. It also populates the responseText property, just for an alternative.  responseText: If the server responsed with the content-type set to text/plain or text/html then we have single string as the data. But now the responseXML will be empty.
  • 61. : COFFEESCRIPT  CoffeeScript is a new way to write tricky and lengthy JavaScript easily and intuitively. http://coffeescript.org/
  • 62. : KNOCKOUT.JS  Knockout is a MVVM (Model-View-ViewModel) library. MVVM is an extension of MVC, originally created by Microsoft. Knockout allows us to do UI bindings declaratively rather than using JS. http://knockoutjs.com/
  • 63.
  • 64. : EXERCISES  Prompt for amount, interest rate and number of years. Now calculate the Simple Interest using the values, and show in alert box.  Check if any given string is palindrome. Use input element to get the string.  Calculate the area of circle.  On click of input button ask the user name and display it inside a input text box.  Copy text of first text box to second text box on every change of value in first text box.
  • 65.  …Continued  Allow submission of form only if the user has entered his name (should not be blank) and age (must be greater than or equals to 18).  Change the color of a div element on mouse over and restore it on mouse out.  Create a Clock object and encapsulate methods like start and stop for starting and stopping the clock. Implementation must use Prototype pattern and event listener mechanism. Display the clock in some div or span or p element.

Notes de l'éditeur

  1. <html> <head> <title>Some title</title> </head> <body> </body> <p>Go to <a href=“#”>some link</a> </body> </html>