Web Technologies Lecture Notes On Unit 2
Web Technologies Lecture Notes On Unit 2
Web Technologies Lecture Notes On Unit 2
Java Script
Unit II
JavaScript
Introduction
data types & expressions
Arrays in Java Scripts
control statements
functions & libraries
Java Script Objects
Event Handling
Dynamic HTML Introduction
Dynamic HTML with Java Sripts
Introduction
HTML is good for developing static Web pages
can specify text/image layout, presentation, links,
Web page looks the same each time it is accessed
in order to develop interactive/reactive pages, must integrate programming in some form or
another
client-side programming
Client side validations of a Web application can be Performed using a scripting language
e.g., JavaScript, JScript, VBScript
Scripting elements 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 its submitted to a remote server
JavaScript
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>
<head>
<title>JavaScript Page</title>
<script type="text/javascript">
// silly code to demonstrate output
document.write("<p>Hello world!</p>");
</body>
</html>
JavaScript Arrays
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
// displays elements
Array Example
<html>
<head>
<title>Die Statistics</title>
<script type="text/javascript"
src="http://www.csc.liv.ac.uk/~martin/teaching/comp519/JS/r
andom.js">
</script>
</head>
<body>
<script type="text/javascript">
numRolls = 60000;
dieSides = 6;
rolls = new Array(dieSides+1);
for (i = 1; i < rolls.length; i++) {
rolls[i] = 0;
}
for(i = 1; i <= numRolls; i++) {
rolls[randomInt(1, dieSides)]++;
}
suppose we want to
simulate die rolls and
verify even distribution
keep an array of counters:
initialize each count to 0
each time you roll X,
increment rolls[X]
display each counter
Arrays (cont.)
Arrays have predefined methods that allow them to be used as stacks,
queues, or other common programming data structures.
var stack = new Array();
stack.push("blue");
stack.push(12);
stack.push("green");
var item = stack.pop();
//
//
var q = [1,2,3,4,5,6,7,8,9,10];
item = q.shift();
// item is now equal to 1, remaining
// elements of q move down one position
// in the array, e.g. q[0] equals 2
q.unshift(125); // q is now the array [125,2,3,4,5,6,7,8,9,10]
q.push(244);
// q = [125,2,3,4,5,6,7,8,9,10,244]
if , if-else, switch
while, for, do-while,
PUZZLE: Suppose you took a piece
of paper and folded it in half, then in
half again, and so on.
<body>
<script type="text/javascript">
var userName = prompt("What is your name?", "");
var userAge = prompt("Your age?", "");
var userAge = parseFloat(userAge);
document.write("Hello " + userName + ".")
if (userAge < 18) {
document.write(" Do your parents know " +
"you are online?");
}
else {
document.write(" Welcome friend!");
}
</script>
<p>The rest of the page...</p>
</body>
</html>
User-Defined Functions
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
{
if (n < 2) {
return false;
}
else if (n == 2) {
return true;
}
else {
for (var i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
Function Example
<html>
<head>
<title>Prime Tester</title>
<script type="text/javascript">
function isPrime(n)
// Assumes: n > 0
// Returns: true if n is prime
{
// CODE AS SHOWN ON PREVIOUS SLIDE
}
</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>
Function definitions
(usually) go in the
<head> section
<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)
<html>
<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>
</head>
Another
Example
recall the dynamic dice
page
<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/comp519/Images/die" +
roll1 + ".gif'/>");
document.write(" ");
document.write("<img src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/comp519/Images/die" +
roll2 + ".gif'/>");
</script>
</div>
</body>
</html>
easier to remember,
promotes reuse
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
Note: as with external style sheets, do not put <script> tags in the external JavaScript library file
load a library using the SRC attribute in the SCRIPT tag (put nothing between the beginning
and ending tags)
<script type="text/javascript"
src="http://www.csc.liv.ac.uk/~martin/teaching/comp519/JS/random.js">
</script>
Library Example
<html>
<head>
<title> Random Dice Rolls Revisited</title>
<script type="text/javascript"
src="http://www.csc.liv.ac.uk/~martin/teaching/comp519/JS/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/comp519/Images/die" +
roll1 + ".gif'/>");
document.write(" ");
document.write("<img src='http://www.csc.liv.ac.uk/"+
"~martin/teaching/comp519/Images/die" +
roll2 + ".gif'/>");
</script>
</div>
</body>
</html>
JavaScript Objects
an object defines a new type (formally, Abstract Data Type)
String Object
a String object encapsulates a sequence of characters, enclosed in quotes
properties include
length
methods include
charAt(index)
substring(start, end)
toUpperCase()
toLowerCase()
to create a string, assign using new or (in this case) just make a direct assignment (new is implicit)
word = new String("foo");
word = "foo";
word.charAt(0)
suppose we want to
test whether a word
or phrase is a
palindrome
noon
Radar
Madam, I'm Adam.
A man, a plan, a canal:
Panama!
must strip non-letters out of the
word or phrase
<html>
<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>
Date Object
String & Array are the most commonly used objects in JavaScript
other, special purpose objects also exist
the Date object can be used to access the date and time
to create a Date object, use new & supply year/month/day/ as desired
today = new Date();
12:00AM
methods include:
newYear.getYear()
newYear.getMonth()
newYear.getDay()
newYear.getHours()
newYear.getMinutes()
newYear.getSeconds()
newYear.getMilliseconds()
<html>
Date Example
<head>
<title>Time page</title>
</head>
<body>
Time when page was loaded:
<script type="text/javascript">
now = new Date();
document.write("<p>" + now + "</p>");
time = "AM";
hours = now.getHours();
if (hours > 12) {
hours -= 12;
time = "PM"
}
else if (hours == 0) {
hours = 12;
}
document.write("<p>" + hours + ":" +
now.getMinutes() + ":" +
now.getSeconds() + " " +
time + "</p>");
</script>
</body>
</html>
Another Example
<html>
<head>
<title>Time page</title>
</head>
<body>
<p>Elapsed time in this year:
<script type="text/javascript">
now = new Date();
newYear = new Date(2012,0,1);
secs = Math.round((now-newYear)/1000);
days = Math.floor(secs / 86400);
secs -= days*86400;
hours = Math.floor(secs / 3600);
secs -= hours*3600;
minutes = Math.floor(secs / 60);
secs -= minutes*60
document.write(days + " days, " +
hours + " hours, " +
minutes + " minutes, and " +
secs + " seconds.");
</script>
</p>
</body>
</html>
document Object
Internet Explorer, Firefox, Opera, etc. allow you to access information about an
HTML document using the document object
<html>
<head>
<title>Documentation page</title>
</head>
<body>
<table width="100%">
<tr>
<td><i>
<script type="text/javascript">
document.write(document.URL);
</script>
</i></td>
<td style="text-align: right;"><i>
<script type="text/javascript">
document.write(document.lastModified);
</script>
</i></td>
</tr>
</table>
</body>
</html>
document.write()
document.lastModified
navigator Object
navigator.appName
<html>
<!- COMP519
<head>
<title>Dynamic Style Page</title>
navigator.appVersion
-->
a {text-decoration:none;
font-size:larger;
color:red;
font-family:Arial}
a:hover {color:blue}
<!-- Netscape.css
-->
a {font-family:Arial;
color:white;
background-color:red}
js14.html
16.08.2006 -->
<script type="text/javascript">
if (navigator.appName == "Netscape") {
document.write('<link rel=stylesheet '+
'type="text/css" href="Netscape.css">');
}
else {
document.write('<link rel=stylesheet ' +
'type="text/css" href="MSIE.css">');
}
</script>
</head>
<body>
Here is some text with a
<a href="javascript:alert('GO AWAY')">link</a>.
</body>
</html>
User-Defined Objects
can define new objects, but the notation can be somewhat awkward
simply define a function that serves as a constructor
specify data fields & methods using this
Object Example
<html>
<head>
<title>Dice page</title>
<script type="text/javascript"
src="Die.js">
</script>
</head>
<body>
<script type="text/javascript">
die6 = new Die(6);
die8 = new Die(8);
roll6 = -1;
// dummy value to start loop
roll8 = -2;
// dummy value to start loop
while (roll6 != roll8) {
roll6 = die6.roll();
roll8 = die8.roll();
document.write("6-sided: " + roll6 +
" " +
"8-sided: " + roll8 + "<br />");
}
document.write("<br />Number of rolls: " +
die6.numRolls);
</script>
</body>
</html>
An event is something that happens, e.g. a mouse click on a button, an image that has loaded.
Events usually occur as a result of human interaction with the browser, e.g. selecting a document to
load, entering form information.
Event Handlers
Event handlers are JavaScript methods, i.e. functions of objects, that allow us as JavaScript
programmers to control what happens when events occur.
For example, the following form has an onSubmit event handler that displays an alert message:
<FORM NAME="formName" onSubmit="alert('Form submitted') >
<INPUT TYPE="SUBMIT"> </FORM>
Event Handlers
Area
button
checkbox
form
onReset(), onSubmit()
frame
onLoad(), onUnload()
image
link
password
radio
reset
select
submit
text
textarea
window
What is DHTML
Generally, DHTML refers to applications that allow a Web page to change dynamically without
requiring the request is to be passed to/from a web server.
More specifically, DHTML refers to the interaction of HTML, CSS and Scripting language
(JavaScript).
Example 2 :
Changing Font Dynamically using Mouse Events:
<html>
<head> <title> dynamic font styles and colors for links</title>
</head>
<body bgcolor=red>
<a style= color : blue;
onmouseover =this.style.color=red; this.style.font =italic 16pt Times ;
onmouseout =this.style.color=blue; this.style.font =normal 16pt Times ; >
Click Here </a>
</body>
</html>
OUT PUT :
When the mouse is placed on Hyper link text it will be changed from blue to red color.
When the mouse is out of the Hyper link it will be change back to blue color.
Important questions
1.
2.
3.
4.
5.
6.
Write a java script to verify a phone number, email-id and date formats.
7.
8.
Explain all the Implicit java script objects their properties and methods