Bài giảng Web technologies and e-Services - Bài 4: Javascript - Trường Đại học Bách khoa Hà Nội
Javascript
1
Content
Client-side programming with JavaScript
§ scripts vs. programs
ØJavaScript vs. JScript vs. VBScript
Øcommon tasks for client-side scripts
§ JavaScript
Ødata types & expressions
Øcontrol statements
Øfunctions & libraries
Østrings & arrays
ØDate, document, navigator, user-defined classes
2
Client-Side Programming
v HTML is good for developing static pages
§ can specify text/image layout, presentation, links, …
§ Web page looks the same each time it is accessed
v Client-side programming
§ programs are written in a separate programming (or scripting) language
e.g., JavaScript, JScript, VBScript
§ programs are embedded in the HTML of a Web page, with (HTML) tags
to identify the program component
e.g., <script type="text/javascript"> … </script>
§ the browser executes the program as it loads the page, integrating the
dynamic output of the program with the static content of HTML
§ could also allow the user (client) to input information and process it,
might be used to validate input before it’s submitted to a remote server
3
Scripts vs. Programs
v A scripting language is a simple, interpreted programming language
§ scripts are embedded as plain text, interpreted by application
§ simpler execution model: don't need compiler or development environment
§ saves bandwidth: source code is downloaded, not compiled executable
§ platform-independence: code interpreted by any script-enabled browser
§ but: slower than compiled code, not as powerful/full-featured
JavaScript: the first Web scripting language, developed by Netscape in 1995
syntactic similarities to Java/C++, but simpler, more flexible in some
respects,
limited in others (loose typing, dynamic variables, simple objects)
JScript: Microsoft version of JavaScript, introduced in 1996
• same core language, but some browser-specific differences
• fortunately, IE, Netscape, Firefox, etc. can (mostly) handle both
VBScript: client-side scripting version of Microsoft Visual Basic
4
Common Scripting Tasks
v adding dynamic features to Web pages
§ validation of form data (probably the most commonly used
application)
§ image rollovers
§ time-sensitive or random page elements
§ handling cookies
v defining programs with Web interfaces
§ utilize buttons, text boxes, clickable images, prompts, etc
v limitations of client-side scripting
§ since script code is embedded in the page, it is viewable to the world
§ for security reasons, scripts are limited in what they can do
e.g., can't access the client's hard drive
§ since they are designed to run on any machine platform, scripts do not
contain platform specific commands
5
JavaScript
v JavaScript code can be embedded in a Web page using <script> tags
§ the output of JavaScript code is displayed as if directly entered in HTML
<html>
document.writedisplays text in the page
<!–- CS443 js01.html 16.08.06 -->
text to be displayed can include HTML tags
the tags are interpreted by the browser when
the text is displayed
<head>
<title>JavaScript Page</title>
</head>
<body>
<script type="text/javascript">
as in C++/Java, statements end with ;
// silly code to demonstrate output
but a line break might also be interpreted as the end
of a statement (depends upon browser)
document.write("<p>Hello
world!</p>");
document.write(" <p>How are <br/> "
JavaScript comments similar to C++/Java
+
" <i>you</i>?</p>
//
starts a single line comment
");
</script>
/*…*/enclose multi-line comments
<p>Here is some static text as
well.</p>
</body>
</html>
view page
6
JavaScript Data Types & Variables
v JavaScript has only three primitive data types
String : "foo" 'how do you do?'
"I said 'hi'."
""
Number: 12
3.14159
1.5E6
Boolean : true
false
*Find info on Null, Undefined
<html>
assignments are as in C++/Java
<!–- CS443 js02.html 16.08.06 -->
<head>
message = "howdy";
pi = 3.14159;
<title>Data Types and
Variables</title>
</head>
variable names are sequences of letters, digits, and
underscores that start with a letter or an underscore
variables names are case-sensitive
<body>
<script type="text/javascript">
var x, y;
x= 1024;
y=x; x = "foobar";
document.write("<p>x = " + y +
"</p>");
document.write("<p>x = " + x +
"</p>");
you don't have to declare variables, will be created
the first time used, but it’s better if you use var
statements
</script>
</body>
view page
</html>
var message, pi=3.14159;
variables are loosely typed, can be assigned
different types of values (Danger!)
7
JavaScript Operators & Control Statements
standard C++/Java operators &
control statements are provided in
<html>
<!–- CS443 js03.html 08.10.10 -->
<head>
JavaScript
<title>Folding Puzzle</title>
</head>
• +, -, *, /, %, ++, --, …
• ==, !=, <, >, <=, >=
<body>
• &&, ||, !,===,!==
<script type="text/javascript">
• if , if-else, switch
var distanceToSun = 93.3e6*5280*12;
var thickness = .002;
• while, for, do-while, …
var foldCount = 0;
while (thickness < distanceToSun) {
PUZZLE: Suppose you took a piece of
paper and folded it in half, then in half
again, and so on.
thickness *= 2;
foldCount++;
}
document.write("Number of folds = " +
foldCount);
</script>
</body>
</html>
How many folds before the thickness of
the paper reaches from the earth to the
view page
sun?
*Lots of information is available online
8
JavaScript Math Routines
<!–- CS443 js04.html 08.10.10 -->
<head>
<title>Random Dice Rolls</title>
</head>
<html>
the built-in Math object contains
functions and constants
Math.sqrt
Math.pow
Math.abs
Math.max
Math.min
Math.floor
Math.ceil
Math.round
<body>
<div style="text-align:center">
<script type="text/javascript">
var roll1 = Math.floor(Math.random()*6) + 1;
var roll2 = Math.floor(Math.random()*6) + 1;
document.write("<img
src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/CS443/Images/die" +
roll1 + ".gif‘ alt=‘dice showing ‘ +
roll1 />");
document.write(" ");
document.write("<img
src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/CS443/Images/die" +
roll2 + ".gif‘ alt=‘dice showing ‘ +
roll2 />");
Math.PI
Math.E
Math.randomfunction returns a real
number in [0..1)
</script>
</div>
</body>
</html>
view page
9
Interactive Pages Using Prompt
<html>
crude user interaction can take
place using prompt
<!-- CS443 js05.html 08.10.10 -->
<head>
<title>Interactive page</title>
</head>
<body>
1st argument: the prompt message that
appears in the dialog box
<script type="text/javascript">
var userName = prompt("What is your name?",
"");
var userAge = prompt("Your age?", "");
var userAge = parseFloat(userAge);
2nd argument: a default value that will
appear in the box (in case the user
enters nothing)
document.write("Hello " + userName + ".")
if (userAge < 18) {
document.write(" Do your parents know "
+
the function returns the value entered
by the user in the dialog box (a string)
"you are online?");
}
else {
document.write(" Welcome friend!");
if value is a number, must use
}
parseFloat (or parseInt) to convert
</script>
<p>The rest of the page...</p>
</body>
</html>
forms will provide a better
view page
interface for interaction (later)
10
User-Defined Functions
v function definitions are similar to C++/Java, except:
§ no return type for the function (since variables are loosely typed)
§ no variable typing for parameters (since variables are loosely typed)
§ by-value parameter passing only (parameter gets copy of argument)
function isPrime(n)
// Assumes: n > 0
// Returns: true if n is prime, else false
{
Can limit variable scope
to the function.
if (n < 2) {
if the first use of a variable is
return false;
}
preceded with var, then
else if (n == 2) {
that variable is local to the
return true;
function
}
else {
for (var i = 2; i <= Math.sqrt(n); i++) {
for modularity, should make
if (n % i == 0) {
all variables in a function
return false;
local
}
}
return true;
}
}
11
Function Example
<html>
<!–- CS443 js06.html 16.08.2006 -->
<head>
<title>Prime Tester</title>
<script type="text/javascript">
Function definitions
(usually) go in the
<head> section
function isPrime(n)
// Assumes: n > 0
// Returns: true if n is prime
{
// CODE AS SHOWN ON PREVIOUS SLIDE
<head> section is loaded
first, so then the function is
defined before code in the
<body> is executed (and,
therefore, the function can
be used later in the body of
the HTML document)
}
</script>
</head>
<body>
<script type="text/javascript">
testNum = parseFloat(prompt("Enter a positive integer",
"7"));
if (isPrime(testNum)) {
document.write(testNum + " <b>is</b> a prime number.");
}
else {
document.write(testNum + " <b>is not</b> a prime
number.");
}
</script>
</body>
</html>
view page
12
Another Example
<html>
<!–- CS443 js07.html 11.10.2011 -->
<head>
<title> Random Dice Rolls Revisited</title>
<script type="text/javascript">
function randomInt(low, high)
// Assumes: low <= high
// Returns: random integer in range [low..high]
{
return Math.floor(Math.random()*(high-low+1)) + low;
}
</script>
recall the dynamic dice
page
</head>
<body>
<div style="text-align: center">
<script type="text/javascript">
roll1 = randomInt(1, 6);
roll2 = randomInt(1, 6);
document.write("<img src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/CS443/Images/die" +
roll1 + ".gif'/>");
could define a function for
generating random numbers in
a range, then use whenever
needed
document.write(" ");
document.write("<img src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/CS443/Images/die" +
roll2 + ".gif'/>");
easier to remember, promotes
reuse
</script>
</div>
</body>
</html>
view page
13
JavaScript Libraries
better still: if you define functions that may be useful to
many pages, store in a separate library file and load
the library when needed load a library using the SRC
attribute in the SCRIPT tag (put nothing between the
beginning and ending tags)
<script type="text/javascript"
src="random.js">
</script>
14
Library Example
<html>
<!–- CS443 js08.html 11.10.2011 -->
<head>
<title> Random Dice Rolls Revisited</title>
<script type="text/javascript"
src="random.js">
</script>
</head>
<body>
<div style="text-align: center">
<script type="text/javascript">
roll1 = randomInt(1, 6);
roll2 = randomInt(1, 6);
document.write("<img src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/CS443/Images/die" +
roll1 + ".gif'/>");
document.write(" ");
document.write("<img src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/CS443/Images/die" +
roll2 + ".gif'/>");
</script>
</div>
</body>
</html>
view page
15
JavaScript Objects
v an object defines a new type (formally, Abstract Data Type)
§ encapsulates data (properties) and operations on that data (methods)
v a String object encapsulates a sequence of characters, enclosed in quotes
properties include
• length: stores the number of characters in the string
methods include
• charAt(index): returns the character stored at the given index (as in
C++/Java, indices start at 0)
• substring(start, end) : returns the part of the string between
the start (inclusive) and end (exclusive) indices
• toUpperCase()
: returns copy of string with letters
uppercase
• toLowerCase()
: returns copy of string with letters
lowercase
to create a string, assign using newor (in this case) just make a direct assignment
(new is implicit)
word = new String("foo");
properties/methods are called exactly as in C++/Java
• word.length word.charAt(0)
word = "foo";
16
String example: Palindromes
// Assumes: str is a string
// Returns: str with all but letters removed
function strip(str)
suppose we want to test
whether a word or phrase
is a palindrome
{
var copy = "";
for (var i = 0; i < str.length; i++) {
if ((str.charAt(i) >= "A" && str.charAt(i) <= "Z")
||
noon
Radar
(str.charAt(i) >= "a" && str.charAt(i) <= "z"))
{
Madam, I'm Adam.
A man, a plan, a canal:
Panama!
copy += str.charAt(i);
}
}
return copy;
}
must strip non-letters out of the word or
phrase
function isPalindrome(str)
// Assumes: str is a string
// Returns: true if str is a palindrome, else false
{
make all chars uppercase in order to be
case-insensitive
str = strim(str.toUpperCase());
for(var i = 0; i < Math.floor(str.length/2); i++) {
if (str.charAt(i) != str.charAt(str.length-i-1)) {
finally, traverse and compare chars
from each end
return false;
}
}
return true;
}
17
<html>
<!–- CS443 js09.html 11.10.2011 -->
<head>
<title>Palindrome Checker</title>
<script type="text/javascript">
function strip(str)
{
// CODE AS SHOWN ON PREVIOUS SLIDE
}
function isPalindrome(str)
{
// CODE AS SHOWN ON PREVIOUS SLIDE
}
</script>
</head>
<body>
<script type="text/javascript">
text = prompt("Enter a word or phrase", "Madam, I'm Adam");
if (isPalindrome(text)) {
document.write("'" + text + "' <b>is</b> a palindrome.");
}
else {
document.write("'" + text + "' <b>is not</b> a
palindrome.");
}
</script>
</body>
</html>
view page
18
JavaScript Arrays
v arrays store a sequence of items, accessible via an index
since JavaScript is loosely typed, elements do not have to be the same
type
§ to create an array, allocate space using new (or can assign directly)
items = new Array(10);
// allocates space for 10 items
items = new Array();
// if no size given, will adjust dynamically
items = [0,0,0,0,0,0,0,0,0,0]; // can assign size & values []
§ to access an array element, use [](as in C++/Java)
for (i = 0; i < 10; i++) {
items[i] = 0;
// stores 0 at each index
}
§ the lengthproperty stores the number of items in the array
for (i = 0; i < items.length; i++) {
document.write(items[i] + "<br>");
// displays elements
}
19
Array Example
<html>
<!–- CS443 js10.html 11.10.2011 -->
<head>
<title>Dice Statistics</title>
<script type="text/javascript"
suppose we want to
simulate dice rolls and verify
even distribution
om.js">
</script>
</head>
keep an array of counters:
initialize each count to 0
<body>
<script type="text/javascript">
numRolls = 60000;
diceSides = 6;
rolls = new Array(dieSides+1);
for (i = 1; i < rolls.length; i++) {
each time you roll X, increment
rolls[X]
rolls[i] = 0;
}
display each counter
for(i = 1; i <= numRolls; i++) {
rolls[randomInt(1, dieSides)]++;
}
for (i = 1; i < rolls.length; i++) {
document.write("Number of " + i + "'s = " +
rolls[i] + "<br />");
}
</script>
</body>
</html>
view page
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Web technologies and e-Services - Bài 4: Javascript - Trường Đại học Bách khoa Hà Nội", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_web_technologies_and_e_services_bai_4_javascript_t.pdf