Upload
lambert-sutton
View
215
Download
1
Embed Size (px)
Citation preview
1
Representation and
Management of Data on the
Web
JavascriptJavascript
2
OverviewOverview
• A "scripting" language for HTML pages
• Embed code in HTML pages so they are downloaded directly to browser
• The browser interprets and executes the script (it is not compiled)
• Do not declare data types for variables (loose typing)
• Dynamic binding – object references checked at runtime
3
Overview (cont.)Overview (cont.)
• Scripts can manipulate "browser
objects:"
– HTML form elements
– Images
– Frames
– etc.
• For security – cannot write to disk (when
run on a client)
4
AbilitiesAbilities
• Generating HTML content dynamically
• Monitoring and responding to user events
• Validate forms before submission
• Manipulate HTTP cookies
• Interact with the frames and windows of the browser
• Customize pages to suit users
5
It is It is notnot Java Java
• Java :
– compilation required (not a script)
– can create “stand alone” application
– object-oriented
• Why is it called Javascript then?
Web browser
HTML Page:
<SCRIPT>
…code..…
</SCRIPT>
Desktop access
InternetHTML/HTTP
TCP/IP
HTML/HTTP
TCP/IP
Web
(HTTP)
Server
HTML
pages w/
embedded
script
Remote host
built-in
JavaScript
interpreter
Web Architecture for Web Architecture for JavaScriptJavaScript
"CLIENT" "SERVER"
7
ExampleExample
<HTML>
<HEAD><TITLE>An Hello World Example</TITLE>
<SCRIPT LANGUAGE = "JavaScript">
document.write("<font size='+4'>");
document.writeln("Hello World!<br>");
document.writeln("What a boring example</font>")
</SCRIPT>
</HEAD>
<BODY> <!-- An empty document body --> </BODY>
</HTML>
Why do we need <br> if we used writeln?
RESULT
8
ExampleExample
<HTML>
<HEAD><TITLE>An Hello World Example</TITLE>
<SCRIPT LANGUAGE = "JavaScript">
document.write("<font size='+4'>");
document.writeln("Hello World!<br>");
document.writeln("What a boring example</font>")
</SCRIPT>
</HEAD>
<BODY> <h1>My Hello World Example</h1> </BODY>
</HTML>
RESULT
9
Past and PresentPast and Present
• Built into Netscape Navigator since v2.0 (early 1996)
• Developed independently of Java
• Proprietary, but submitted as standard and built into Microsoft IE 3.0 and later
• Standardized by ECMA (European Computer Manufacture’s Association) into ECMAscript
• EMCAscript joins JavaScript and Jscript to one standard
10
Client and ServerClient and Server
• JavaScript can be used
– On the client side
– On the server
• More lightweight and reliable on clients
than Java (Applets)
• Useful for developing interactive
interface (Dynamic HTML)
11
CGI and other Server-side CGI and other Server-side ArchitecturesArchitectures
• Strengths– allows access to
server files and databases
– makes no assumptions about client computer capabilities, puts little burden on it
– easier to manage and control on server
– more secure for client
• Weaknesses
– puts most of processing
load on server
– requires round-trip for
every submission, using
valuable bandwidth
– cannot provide
instantaneous response
expected with GUI
– less secure for server
12
JavaScript Reserved JavaScript Reserved KeywordsKeywords
• break
• case
• continue
• delete
• do
• else
• false
• for
• function
• if
• in
• new
• null
• return
• switch
• this
• true
• typeof
• var
• void
• while
• with
13
Non Used Reserved WordsNon Used Reserved Words
• catch
• class
• const
• debugger
• default
• enum
• export
• extends
• finally
• import
• super
• try
14
Javascript VariablesJavascript Variables
• Untyped!
• Can be declared with var keyword:
var foo;
• Can be created automatically by
assigning a value:
val = 1;
val = “Thank for all the fish";
val has changed from an int to a String!
15
Variables NamesVariables Names
• A variable name can be any valid identifier
• The identifier is a series of characters – Consisting of letters (lower and upper case),
digits, and underscores (_)
– Does not begin with a digit
– Does not contain any space
• Javascript is case sensitive (foo and FOO are different)
16
VariablesVariables
• Local variable is available only in the
function where it is declared
• Global variable is available all over the
document
• A variable declaration
– Inside a function creates a local variable
– Outside a function creates a global variable
• Local variables must be declared with var
17
LiteralsLiterals
• The typical bunch:
– Numbers 17 123.45
– Strings “Let it be”
– Boolean: true false
– Arrays: [1,“ab ba”,17.234]
– null
– undefinedArrays can hold anything!
You can use typeof(A) to get the type of A:
number, string, object..
18
OperatorsOperators
• Arithmetic, comparison, assignment, bit
wise, Boolean (pretty much just like Java)
+ - * / % ++ --
== != > < >= <=
&& || ! & | << >>
+= -= *= /= %=
19
The Special Plus CommandThe Special Plus Command
• Which of the following two is correct?
• What is the ‘type’ of the answer?
x = “The answer is” + 42y = 42 + “is the answer”
20
Which is correct?Which is correct?
• Which of the following two is correct?
• What is the ‘type’ of the answer?
x = "37" + 7y = "37" - 7
21
Types of EqualityTypes of Equality
• The equals == checks if both operands
are equal after performing type
conversion
• The equals === checks if both operands
are of the same type and equal
• Example:
– 3 == "3" (true or false?)
– 3 === "3" (true or false?)
22
Types of InequalityTypes of Inequality
• The equals != checks if both operands are
unequal after performing type conversion
• The equals !== checks if both operands
are not of the same type and or not equal
• Example:
– 3 != "3" (true or false?)
– 3 !== "3" (true or false?)
Conditional OperatorsConditional Operators
• equals
if (a == b) {…}
• not equals
if (a != b) {…}
• greater than or equal to
if (a >= b) {...}
• less than or equal to
if (a <= b) {...}
Boolean OperatorsBoolean Operators
• and
if (true && true) {…}
• or
if (true || false) {…}
• not
if (! false) {...}
25
<HTML>
<HEAD><TITLE>Using Variables</TITLE>
<SCRIPT LANGUAGE = "JavaScript">
var firstNumber = 11,
secondNumber = 23,
sum;
sum = firstNumber + secondNumber;
document.write("<FONT COLOR = 'blue' SIZE = '6'>The sum of " + firstNumber + " and " + secondNumber + " is </FONT>");
document.write(" <FONT COLOR = ‘red' SIZE = '7'>" + sum + "</FONT>");
</SCRIPT>
</HEAD>
<BODY> <!-- An empty document body --> </BODY>
</HTML>
RESULT
26
Control StructuresControl Structures
• Some just like Java:
if if-else ?: switch
for while do-while
• And a few not like in Java
for (var in object)
with (object)
JavaScript’s Basic JavaScript’s Basic ConstructsConstructs
• sequence (block)
• condition (selection)
• loop (iteration)
JavaScript ConstructsJavaScript Constructs
• sequence (block)
– executes with no conditions
– semicolons optional using one statement per line, but not a bad thing to use all the time
var metushelahAge = 130; var yourAverageAge
yourAverageAge = metushelahAge - 98
var myObject = new Object("initial value")
more statements here..
…..
JavaScript ConstructsJavaScript Constructs
• condition (selection)
if (condition) {statements if true}
else {statements if false}
if (metushelahAge < yourAverageAge) {
document.write ("<body><h2>its true that
Metushelah is younger than most of you,")
document.write ("<br>computers never lie!</h2>
</body>")
}
JavaScript ConstructsJavaScript Constructs
• loop (iteration): both for and while loops
are available
for (var i=0; i < inputAge.length; i++) {
var oneChar = inputAge.substring (i, i+1)
if (oneChar < "0" || oneChar > "9") {
alert("Please enter a valid number “
+ oneChar + " is not valid.")
}
}
31
<HTML>
<HEAD><TITLE>Loops Example</TITLE>
<SCRIPT LANGUAGE = "JavaScript">
for (var counter = 1 ; counter <= 8 ; ++counter) {
document.write(“<P><FONT COLOR = ‘blue’ SIZE = ‘ “ + counter + “ '> Now with font size " + counter + " </FONT></P> “);
}
</SCRIPT>
</HEAD>
<BODY> <!-- An empty document body --> </BODY>
</HTML>
RESULT
32
JavaScript FunctionsJavaScript Functions
• Functions are first class citizens
• The keyword function used to define a
function (subroutine):
function add(x,y) {
return(x+y);
}
33
Function Input and OutoutFunction Input and Outout
• Numbers and Boolean values always
passed to functions using call-by-value
• For objects, a call-by-reference is used
to pass them to the functions
• Numbers and Boolean values are
always returned by value
• Objects returned by reference
34
ExampleExample
• Computing the Fibonacci numbers.
HTML Page
35
<HTML>
<HEAD><TITLE>Functions Example</TITLE>
<SCRIPT LANGUAGE = "JavaScript">
function fibonacciValue() {
var value = parseInt(document.fibonacciForm.number.value );
window.status = "Calculating Fibonacci number for " + value;
document.fibonacciForm.result.value = fibonacci(value);
window.status = "Done Calculating Fibonacci number";
}
function fibonacci( n ) {
if (n == 0 || n == 1) return n;
else return fibonacci( n - 1 ) + fibonacci( n - 2 );
}
</SCRIPT></HEAD>
36
<BODY>
<FORM NAME = "fibonacciForm">
<TABLE BORDER = "1" BGCOLOR = "blue">
<TR><TD BGCOLOR = "cyan">Enter a number</TD>
<TD><INPUT NAME = "number" TYPE = "text"></TD>
<TD><INPUT TYPE = "button" VALUE = "Calculate"
ONCLICK = "fibonacciValue()"</TR>
<TR><TD BGCOLOR = "cyan">Fibonacci Value</TD>
<TD><INPUT NAME = "result" TYPE = "text"> </TD> </TR>
</TABLE>
</FORM>
</BODY>
</HTML>
37
Function ArgumentsFunction Arguments
• Within a function, its arguments can be
accessed with arguments[i].
• The number of arguments is
arguments.length
• A function can be created that takes
any number of arguments
38
ExampleExample
function myConcat(separator) { result="" // initialize list // iterate through arguments for (var i=1; i<arguments.length; i++) { result += arguments[i] + separator } return result}
//What does this return?
myConcat(", ","red","orange","blue")
39
Global Functions (1)Global Functions (1)
• escape – changes characters in a string
that are not in the ASCII characters set to
HEX
• unescape – decodes the escape encoding
• eval – gets a string of JavaScript code,
evaluates it and executes it
– It allows dynamic code execution
40
Global Functions (2)Global Functions (2)
• isNaN – takes a numeric argument and
returns true if the value is not a number
• parseFloat – takes a string argument and
converts its beginning to a float number (or
return NaN)
• parseInt – takes a string argument and
converts its beginning to an integer number
(or return NaN)
41
Global Functions (3)Global Functions (3)
• isFinite – given a numeric argument it
returns true if the argument is not
– NaN
– Number.POSITIVE_INFINITY
– Number.NEGATIVE_INFINITY
42
ObjectsObjects
• Objects have attributes and methods
• There are pre-defined objects and
user-defined object types
• Using objects has similarity to the
syntax of C++/Java:
objectName.attributeNameobjectName.methodName()
43
Objects Are Like ArraysObjects Are Like Arrays
myCar.make = "Ford"myCar.model = "Mustang"myCar.year = 66;
myCar[“make”] = "Ford"myCar[“model”] = "Mustang"myCar[“year”] = 66;
44
function show_props(obj, obj_name) { var result = "" for (var i in obj) result += obj_name + "." + i + " = " + obj[i] + "\n" return result}
myCar.make = FordmyCar.model = MustangmyCar.year = 66
So, the function call show_props(myCar, "myCar")would return the following:
45
Creating a New ObjectCreating a New Object
• There are two ways to create new
objects:
• Object Initializer:
– objectName={prop1:val1, …, propN:valN}
• Constructor Function:
– define a constructor function
– create the new object using new
46
ExampleExample
function car(make, model, year) { this.make = make this.model = model this.year = year}
theMazda = new car(“Mazda", “323", 1991)theHonda = {make:”Honda”, year:1992, color:"red",wheels:4,
engine:{cylinders:4,size:2.2}}
47
Creating a MethodCreating a Method
• A method of an object is a function
that has been assigned to the object:
object.methodName = functionName
48
ExampleExample
function displayCar() { var result = "A Beautiful " + this.year + " " + this.make + " " + this.model; document.writeln(result)}
function car(make, model, year) { this.make = make this.model = model this.year = year this.displayCar = displayCar}
Setting the method
49
Eval ExampleEval Example
function Dog(name,breed,color) { this.name=name this.breed=breed this.color=color}
myDog = new Dog("Gabby")myDog.breed="Lab"
var breed='Shepherd'
document.write("<P>" + eval('breed'))document.write("<BR>" + myDog.eval('breed'))
50
Eval ExampleEval Example
function stone(str) { eval("this."+str) this.y=43 this["z"] = 44}
flint = new stone("x=42")
document.write("<BR>flint.x is " + flint.x)document.write("<BR>flint.y is " + flint.y)document.write("<BR>flint.z is " + flint.z)
51
Deleting an ObjectDeleting an Object
• To delete an object just set the object
reference to null
• When are objects that are not set to
null being removed?
52
Array ObjectsArray Objects
• Arrays are supported as objects
• Attribute length
• Methods include:
concat, join, pop, push, reverse,
sort
Joins elements into a string
Joins two arrays
53
Creating a New ArrayCreating a New Array
• var a = [“red”, “blue”, “green”]
– Allocates an array of 3 cells and initializes the values
• var b = new Array(5)
– Allocates an array of 5 cells without initializing values
• var c = new Array()
– Creates a new empty array
54
Array Example CodeArray Example Code
var a = [8,7,6,5];
for (i=0;i<a.length;i++)a[i] += 2;
b = a.reverse();
55
Understanding ArraysUnderstanding Arrays
• Array literals:
– arr1 = ["hello", 1, 33]
• Accessing arrays: (what is the result of)
– document.writeln(arr1.length)
– document.writeln(arr1[0])
– document.writeln(arr1["abc"])
– arr1[10]=66
– document.writeln(arr1.length)
56
Passing Arrays to Passing Arrays to FunctionsFunctions
• Arrays can be passed to functions as
arguments
• The array is passed by call-by-
reference
• The name of the array is given to the
function
57
<HTML><HEAD><TITLE>Arrays Example</TITLE>
<SCRIPT LANGUAGE = "JavaScript">
function start() {
var colors = ["red", "blue", "green"]
printArray(colors);
printArray(colors);
}
function printArray( arr) {
for (var i in arr) {
document.writeln("<FONT SIZE=5 COLOR=" + arr[i] + ">"
+ arr[i] + " </FONT><BR>");
arr[i] = "gray";
}
} </SCRIPT>
</HEAD><BODY ONLOAD = "start()"> </BODY></HTML>
RESULT
58
Multidimentional ArraysMultidimentional Arrays
• var matrix = [ [0, 1, 1], [1, 1, 0], [0, 0,
0]];
• var myArray = [[1, 2, 3], [1], [1, 2]];
• Going over the array
for (var i in myArray ) {
for (var j in myArray[i])
document.write(myArray[i][j]);
59
Other Object TypesOther Object Types
• String: manipulation methods
• Math: trig, log, random numbers
• Date: date conversions
• RegExp: regular expressions
• Number: limits, conversion to string
60
Math Common MethodsMath Common Methods
• abs(x)
• round(x)
• ceil(x)
• floor(x)
• max(x, y)
• min(x, y)
• cos(x)
• sin(x)
• tan(x)
• exp(x)
• pow(x, y)
• sqrt(x)
• log(x)Math Also includes constants
such as: Math.E, Math.PI
61
String Common MethodsString Common Methods
• charAt (index)
• charCodeAt(index)
• concat(string)
• fromCharCode(value1,
value2, …)
• indexOf(substring,
index)
• lastIndexOf(substring,
index)
• slice(start, end)
• split(string)
• substr(start, length)
• substring(start, end)
• toLowerCase()
• toUpperCase()
• toString()
• valueOf()
62
Methods that Generate HTMLMethods that Generate HTML
• anchor(name) – wraps the source with
– <A name = name></A>
• big() – wraps the source with
– <BIG></BIG>
• blink() – wraps with
– <BLINK></BLINK>
• bold() – wraps the source with
– <B></B>
• fixed() – wraps the source with
– <TT></TT>
63
More Methods that Generate More Methods that Generate HTMLHTML
• fontcolor(color) – wraps with
– <FONT color=“color”></FONT>
• fontsize(size) – wraps with
– <FONT size=“size”></FONT>
• italic() – wraps with
– <I></I>
• link(url)
– <A href = url></A>
64
More Methods that Generate More Methods that Generate HTMLHTML
• small() – wraps the source with
– <SMALL></SMALL>
• strike() – wraps the source with
– <STRIKE></STRIKE>
• sub() – wraps the source with
– <SUB></SUB>
• sup() – wraps the source with
– <SUP></SUP>
65
Date Common MethodsDate Common Methods
• getDate(), getFullYear(), getMonth(),
getDay
• getTime(), getHours(), getMinutes(),
getSeconds(), getMilliseconds()
66
<HTML>
<HEAD><TITLE>Time Example</TITLE>
<SCRIPT LANGUAGE = "JavaScript">
function getTimes() {
var current = new Date();
var out = "Day: " + current.getDay()+"\n";
out = out.concat("Month: " + current.getMonth() + "\n");
out = out.concat("Year: " + current.getFullYear() + "\n");
out = out.concat("GMT Time: " + current.toUTCString() + "\n");
out = out.concat("Time: " + current.toString() + "\n");
timesForm.output.value = out;
}
</SCRIPT>
</HEAD>
67
<BODY>
<FORM NAME="timesForm">
<P>
<INPUT NAME = "getTimeButton" TYPE = "button" VALUE = "Get Time" ONCLICK = "getTimes()">
<P>
<TEXTAREA NAME = "output" ROWS ="10" COLS="42">
</TEXTAREA>
</FORM>
</BODY>
</HTML>
RESULT
68
Predefined ObjectsPredefined Objects
• In JavaScript the following objects are
automatically created for you (always
available)
– document
– navigator
– screen
– window
69
The The documentdocument Object Object
• Many attributes of the current
document are available via the
document object:
Title Referrer
URL Images
Forms Links
Colors
70
Objects HierarchyObjects Hierarchy
• JavaScript objects include object hierarchy + (property or method)– window.document.lastModified
– metushelahBirthday.getYear()
• need not be fully qualified– document.lastModified
• proceeds from most to least general– window.document.forms[0].inputText1.value
• all names are case sensitive
71
Objects Objects Object Oriented Object Oriented
• Objects – complex data types or “containers” that have both data and code
• Methods – code or “functions” that work on an object’s properties
• Properties – data that are stored and retrieved via object references
• This is not true "OO" because the object hierarchy is not extensible, you can create new objects, but cannot extend existing ones
72
The The withwith Statement Statement
• Establishes the default object for a set
of statements
• Within the set of statements, any
property references that do not specify
an object are assumed to be for the
default object
73
Example of Example of withwith
var a, x, y
var r=10
with (Math) {
a = PI * r * r
x = r * cos(PI)
y = r * sin(PI/2)
}
74
Dynamic HTMLDynamic HTML
HTML
CSSJava Script
HTML HTML
Dynamic HTML
HTML
CSS
Java Script