JavaScript I - DePaul University
Download
Report
Transcript JavaScript I - DePaul University
JavaScript I
ECT 270
Robin Burke
Outline
JavaScript
Programming
Syntax
Interacting with the browser
Variables and data types
Arrays
Flow of control
Function definitions
Date object
Homework #6
Why JavaScript?
Web application round-trip expensive
Web pages static
no way to do computation on the client side
example: form validation
no way to allow users to interact with the
page
example: popup link menus
What is needed
client-side code
JavaScript
Very little connection to Java
JavaScript is
marketing move by Netscape
a scripting language
for web clients
interpreted
untyped
Dynamic HTML
combination of JavaScript, CSS and DOM
to create very flexible web page presentation
JavaScript history
Introduced with Netscape 2.0
MS copied with JScript
In 1998, ECMAScript became a
standard
proprietary names still used
ECMA sets minimum standards
JavaScript Programming
Easy to work with
Easy to get in trouble
edit page
view in browser
no compilation / linking / libraries / etc
easy to skip documentation, proper coding
practices
Headaches
browser compatibility
browser-version compatibility
Best Practices
Naming
Documentation
Documentation of each significant variable
Sparse documentation within the body of a function (usually
on the right side of expressions) so as not to interfere with
understanding the flow of control
Style
lower/upper for variable names e.g. "upperRight".
Careful delineation of the start and end of functions
Alignment of expressions so that differences between
similar expressions can easily be spotted
Embedded output
Format HTML so it closely corresponds with the actual
appearance of the output
Goal = Understandable code
Our Practice: PDL
Write PDL first as comments
program design language
what the program should do
in "application" terms, not code terms
• no variable names
• no operators
Integrate PDL with code as it is written
Example
PDL
Program
h = marginR + offset;
PDL
add the right margin to the block offset to
find the horizontal position of the block
find the highest and lowest scores on exam
Program
...
Our Practice:
Iterative Development
Working ≠ Finished
When the program works, ask
how could it be improved?
what are the vectors of change?
Dimensions of improvement
readability / organization
compactness
cleanliness
modularity / flexibility
efficiency
Our Practice: In-class coding
Programming is an interactive activity
hard to teach in lecture setting
We'll program our examples together
Debugging JavaScript
Browser settings
Internet Options.../Advanced
• Display a notification about every script
error
• Disable script debugging
JavaScript and HTML
Identifying script sections
<script> and </script>
But some browser can't / don't
process
Problem
• script becomes part of the page content
Solution
• enclose script in HTML comments
JavaScript skeleton
<html>
<head>
... HTML head content ...
<script language="JavaScript" type="text/javascript">
<!—
... code here executed on loading ...
//-->
</script>
</head>
<body>
... page content ...
<script language="JavaScript" type="text/javascript">
<!-... code here executed during page rendering ...
//-->
</script>
... more page content ...
</body>
</html>
JavaScript execution model
Interpreted
Outside of SCRIPT elements
HTML output as usual
Inside SCRIPT elements
Code is executed as read
JavaScript evaluated
May or may not result in output to the page
At the end of the page
JavaScript program terminates
but code may still be resident
• event handling
Basic syntax
Familiar from Java
Statement end ;
Grouping statements { }
if foo { bar; }
Comments // and /* */
a = a + 1;
// this is a comment
Case-sensitive
Objects
JavaScript uses objects
Methods
dot syntax to access fields and methods
document.write ("foo");
calls the method write on object
document with argument "foo"
Fields
document.lastModified
gets the date from the HTTP header
Interacting with the browser
Built-in objects
window
document
methods and fields related to the browser
methods and fields related to a particular
document displayed in the browser
We can manipulate the browser and its
contents programmatically
dynamic HTML
window
window.navigator
window.frames[]
an array containing all of the frames in a framed document
example: window.frame[0]
window.status
an object describing the user's browser
useful for code that depends on a particular browser version
example: window.navigator.appName
access to the contents of the status bar in the browser
example: window.status
window.history
access to the browser's history list
example: window.history.back()
window, cont'd
opening new windows
window.open
window.alert()
opens a dialog with a message
example: window.alert ("The system has crashed.")
window.confirm()
creates a new browser window (pop-up)
example: window.open ("www.cti.depaul.edu")
opens a dialog that the user can OK or cancel
returns true if OK
example: window.confirm ("Proceed to erase hard disk?")
window.prompt()
opens a dialog that returns a value
example:window.prompt("Enter user id:")
document
document.images
document.write / writeln
methods for adding content to the document
example: document.writeln ("foo");
document.forms
all the images in the document
example: document.images[2]
all the forms in the document
document.all
all the HTML elements in the document
Elements
We have access to the HTML
elements in the document
change attributes
change contents
Examples
Hello, world
write text to the page
write HTML to the page
Browser info
write browser appName and version
to the page
Pop-up
use the alert and open methods
Variables and data types
JavaScript data types
numeric
string
boolean
object reference
• like in Java
ignore book viz. "null"
Remember
JavaScript is untyped
no type declarations
you have to keep track of what is stored where
Declaration
Variables do not have to be declared
using a variable makes it exist
But, for this class
all variables must be declared
unlike Java, no types
Declaration
var foo;
Arrays
Normally
JavaScript doesn't require
X
X
A fixed-size collection of identically
typed data items distinguished by their
indices
fixed size
identical types
Example
document.images[0]
Arrays cont'd
Creating an array
var a = new Array ();
Accessing
a[0] = 5;
a[1] = "foo";
a[2] = 10;
b = a[0] + a[2];
Legal but a bad idea
Example
Image swap
wait for alert, then swap images
Image swap, with preloading
Multi image swap
Control flow
Standard options available
Conditional
Loops
for
while
do
If statement
The same as Java
if test
{ ... if part ...
}
else
{ ... else part ...
}
Example
Conditional image display
display second image if user answers
"OK" to a confirmation
For loop
Mostly the same as Java
for (i = 0; i < 5; i++)
{ ... repeated part ...
}
Variant for object properties
for (i in documents)
{ ... repeated part ...
}
Example
Slide show
once-through
Slide show
recycling
Functions
In Java
you wrote functions associated with classes
• methods
In JavaScript
we won't be defining new classes
we write functions with global scope
• can be called anywhere on the page
next week we'll see how functions can be
called from events
functions can also simplify programs
Functions cont'd
Syntax
function name(parameter list)
{
... function code ...
}
Placement
best place is in the HEAD element
• recall skeleton
must be before first invocation
Function cont'd
Functions need not return a value
different from VB
If a function does return a value, use
return value;
Scope
variables declared with var inside a function
• are local
different from Java
• all variables in a method are local
Example
slide show with functions
The Date object
JavaScript has a built-in object
classes for programmers to use
The Date object
used in the homework
relevant for doing time and date
computations
• days until Chirstmas in book
contains both date and time
Date object, cont'd
Constructor
new Date (parameters)
Parameters can be
a single string
new Date ("October 27, 2003");
a list of values
new Date (2003, 9, 27);
empty = current date and time
new Date ();
Internal representation
count of milliseconds
Components of the date
Accessors
getYear() returns year
getMonth () returns month
getDay (),
getHours(),
getMinutes(),
getSeconds()
Calculations from millisecond
representation
Using lastModified date
document.lastModified
returns a Date in String form
not in JavaScript date form
Must use the Date constructor
new Date (document.lastModified)
Example
Greetings
How long ago modified?
Homework #6
Case 1 Chapter 8
Meal of the day
Zodiac page
Use JavaScript prompts to gather date
of birth
Display zodiac sign
Wednesday
Lab 3