Lecture 6 Java Script 07042021 041526pm
Lecture 6 Java Script 07042021 041526pm
Lecture 6
Table of Contents
• What is DHTML?
• DHTML Technologies
– XHTML, CSS, JavaScript, DOM
3
Table of Contents
• Introduction to JavaScript
– What is JavaScript
– Implementing JavaScript into Web pages
• In <head> part
• In <body> part
• In external .js file
4
Table of Contents
• JavaScript Syntax
– JavaScript operators
– JavaScript Data Types
– JavaScript Pop-up boxes
• alert, confirm and prompt
– Conditional and switch statements, loops and
functions
• Document Object Model
• Debugging in JavaScript
5
DHTML
Dynamic Behavior at the Client Side
What is DHTML?
• Dynamic HTML (DHTML)
– Makes possible a Web page to react and change in
response to the user’s actions
• DHTML = HTML + CSS + JavaScript
7
DTHML = HTML + CSS + JavaScript
• HTML defines Web sites content through
semantic tags (headings, paragraphs, lists, …)
• CSS defines 'rules' or 'styles' for presenting every
aspect of an HTML document
– Font (family, size, color, weight, etc.)
– Background (color, image, position, repeat)
– Position and layout (of any object on the page)
• JavaScript defines dynamic behavior
– Programming logic for interaction with the user, to
handle events, etc.
8
JavaScript
Dynamic Behavior in a Web Page
JavaScript
• JavaScript is a front-end scripting language
developed by Netscape for dynamic content
– Lightweight, but with limited capabilities
– Can be used as object-oriented language
• Client-side technology
– Embedded in your HTML page
– Interpreted by the Web browser
• Simple and flexible
• Powerful to manipulate the DOM
10
JavaScript Advantages
• JavaScript allows interactivity such as:
– Implementing form validation
– React to user actions, e.g. handle keys
– Sections of a page appearing and disappearing
– Content loading and changing dynamically
– Performing complex calculations
– Custom HTML controls, e.g. scrollable table
– Implementing AJAX functionality
11
What Can JavaScript Do?
• Can handle events
• Can read and write HTML elements and modify
the DOM tree
• Can validate form data
• Can access / modify browser cookies
• Can detect the user’s browser and OS
• Can be used as object-oriented language
• Can handle exceptions
• Can perform asynchronous server calls (AJAX)
12
The First Script
first-script.html
<html>
<body>
<script type="text/javascript">
alert('Hello JavaScript!');
</script>
</body>
</html>
13
Another Small Example
small-example.html
<html>
<body>
<script type="text/javascript">
document.write('JavaScript rulez!');
</script>
</body>
</html>
14
Using JavaScript Code
• The JavaScript code can be placed in:
– <script> tag in the head
– <script> tag in the body – not recommended
– External files, linked via <script> tag the head
• Files usually have .js extension
<script src="scripts.js" type="text/javscript">
<!– code placed here will not be executed! -->
</script>
• Highly recommended
• The .js files get cached by the browser
15
JavaScript – When is Executed?
• JavaScript code is executed during the page
loading or when the browser fires an event
– All statements are executed at page loading
– Some statements just define functions that can be
called later
• Function calls or code can be attached as "event
handlers" via tag attributes
– Executed when the event is fired by the browser
16
Calling a JavaScript Function
from Event Handler – Example
<html> image-onclick.html
<head>
<script type="text/javascript">
function test (message) {
alert(message);
}
</script>
</head>
<body>
<img src="logo.gif"
onclick="test('clicked!')" />
</body>
</html>
17
Using External Script Files
• Using external script files:
<html>
<head> external-JavaScript.html
<script src="sample.js" type="text/javascript">
</script>
</head> The <script> tag is always empty.
<body>
<button onclick="sample()" value="Call JavaScript
function from sample.js" />
</body>
</html>
function sample() {
alertfrom samp('Hello le.js!')
} sample.js
18
The JavaScript
Syntax
JavaScript Syntax
• The JavaScript syntax is similar to C# and Java
– Operators (+, *, =, !=, &&, ++, …)
– Variables (typeless)
– Conditional statements (if, else)
– Loops (for, while)
– Arrays (my_array[]) and associative arrays
(my_array['abc'])
– Functions (can return value)
– Function variables (like the C# delegates)
20
Data Types
• JavaScript data types:
– Numbers (integer, floating-point)
– Boolean (true / false)
• String type – string of characters
var myName = "You can use both single or double
quotes for strings";
• Arrays
var my_array = [1, 5.3, "aaa"];
• What is "9" + 9?
alert("9" + 9); // 99
23
Arrays Operations and Properties
• Declaring new empty array:
var arr = new Array();
• Declaring an array holding few elements:
var arr = [1, 2, 3, 4, 5];
• Appending an element / getting the last element:
arr.push(3);
var element = arr.pop();
• Reading the number of elements (array length):
arr.length;
• Finding element's index in the array:
arr.indexOf(1);
24
Standard Popup Boxes
• Alert box with text and [OK] button
– Just a message shown in a dialog box:
alert("Some text here");
• Confirmation box
– Contains text, [OK] button and [Cancel] button:
confirm("Are you sure?");
• Prompt box
– Contains text, input field with default value:
prompt ("enter amount", 10);
25
Sum of Numbers – Example
sum-of-numbers.html
<html>
<head>
<title>JavaScript Demo</title>
<script type="text/javascript">
function calcSum() {
value1 =
parseInt(document.mainForm.textBox1.value);
value2 =
parseInt(document.mainForm.textBox2.value);
sum = value1 + value2;
document.mainForm.textBoxSum.value = sum;
}
</script>
</head>
26
Sum of Numbers – Example (2)
sum-of-numbers.html (cont.)
<body>
<form name="mainForm">
<input type="text" name="textBox1" /> <br/>
<input type="text" name="textBox2" /> <br/>
<input type="button" value="Process"
onclick="javascript: calcSum()" />
<input type="text" name="textBoxSum"
readonly="readonly"/>
</form>
</body>
</html>
27
JavaScript Prompt – Example
prompt.html
Var price = prompt("Enter the price",
"10.00");
alert('Price + VAT = ' + price * 1.2);
28
Conditional Statement (if)
unitPrice = 1.30;
if (quantity > 100) {
unitPrice = 1.20;
}
Symbol Meaning
> Greater than
< Less than
>= Greater than or equal to
Less than or equal to
== Equal
!= Not equal
29
Conditional Statement (if)
• The condition may be of Boolean or integer type:
conditional-statements.html
var a = 0;
var b = true;
if (typeof(a)=="undefined" || typeof(b)=="undefined") {
document.write("Variable a or b is undefined.");
}
else if (!a && b) {
document.write("a==0; b==true;");
} else {
document.write("a==" + a + "; b==" + b + ";");
}
30
Switch Statement
The switch statement works like in C#:
switch (variable) { switch-statements.html
case 1:
// do something
break;
case 'a':
// do something else
break;
case 3.14:
// another code
break;
default:
// something completely different
}
31
Loops
• Like in C#
• for loop
• while loop
• do … while loop
var counter;
for (counter=0; counter<4; counter++) {
alert(counter);
}
while (counter < 5) {
alert(++counter);
} loops.html
32
Functions
• Code structure – splitting code into parts
• Data comes in, processed, result returned
Parameters come
function average(a, b, c) in here.
{
var total; Declaring variables
total = a+b+c; is optional. Type is
return total/3; never declared.
}
Value returned
here.
33
Function Arguments
and Return Value
• Functions are not required to return a value
• When calling function it is not obligatory to
specify all of its arguments
– The function has access to all the arguments passed
via arguments array
function sum(a, b) {
var sum = 0;
sum =a+b;
return sum;
}
alert(sum(1, 2));
functions-demo.html
34
Document Object Model (DOM)
35
Accessing Elements
• Access elements via their ID attribute
var elem = document.getElementById("some_id")
36
DOM Manipulation
Once we access an element, we can read and
write its attributes
DOM-manipulation.html
function change(state) {
var lampImg = document.getElementById("lamp");
lampImg.src = "lamp_" + state + ".png";
var statusDiv =
document.getElementById("statusDiv");
statusDiv.innerHTML = "The lamp is " + state";
}
…
<img src="test_on.gif" onmouseover="change('off')"
onmouseout="change('on')" />
37
Accessing Elements through the
DOM Tree Structure
• We can access elements in the DOM through
some tree manipulation properties:
– element.childNodes
– element.parentNode
– element.nextSibling
– element.previousSibling
– element.firstChild
– element.lastChild
38
Accessing Elements through
the DOM Tree – Example
var el = document.getElementById('div_tag');
alert (el.childNodes[0].value);
alert (el.childNodes[1].
getElementsByTagName('span').id);
…
<div id="div_tag">
<input type="text" value="test text" />
<div>
<span id="test">test span</span>
</div>
</div> accessing-elements-demo.html
Warning: may not return what you expected due to Browser differences
39
The HTML DOM Event
Model
The HTML DOM Event Model
• JavaScript can register event handlers
– Events are fired by the Browser and are sent to the
specified JavaScript event handler function
– Can be set with HTML attributes:
<img src="test.gif" onclick="imageClicked()" />
41
The HTML DOM Event Model (2)
• All event handlers receive one parameter
– It brings information about the event
– Contains the type of the event (mouse click, key
press, etc.)
– Data about the location where the event has been
fired (e.g. mouse coordinates)
– Holds a reference to the event sender
• E.g. the button that was clicked
42
The HTML DOM Event Model (3)
– Holds information about the state of [Alt], [Ctrl]
and [Shift] keys
– Some browsers do not send this object, but place
it in the document.event
– Some of the names of the event’s object
properties are browser-specific
43
Common DOM Events
• Mouse events:
– onclick, onmousedown, onmouseup
– onmouseover, onmouseout, onmousemove
• Key events:
– onkeypress, onkeydown, onkeyup
– Only for input fields
• Interface events:
– onblur, onfocus
– onscroll
44
Common DOM Events (2)
• Form events
– onchange – for input fields
– onsubmit
• Allows you to cancel a form submission
• Useful for form validation
• Miscellaneous events
– onload, onunload
• Allowed only for the <body> element
• Fires when all content on the page was loaded / unloaded
45
onload Event – Example
onload.html
onload event
<html>
<head>
<script type="text/javascript">
function hello() {
alert("Loaded.");
}
</script>
</head>
<body onload=“hello()" >
</body>
</html>
46
The Built-In Browser
Objects
Opening New Window – Example
• window.open() window-open.html
var newWindow = window.open("", "sampleWindow",
"width=300, height=100, menubar=yes,
status=yes, resizable=yes");
newWindow.document.write(
"<html><head><title>
Sample Title</title>
</head><body><h1>Sample
Text</h1></body>");
newWindow.status =
"Hello folks";
48
The Navigator Object
alert(window.navigator.userAgent);
49
The Screen Object
• The screen object contains information
about the display
window.moveTo(0, 0);
x = screen.availWidth;
y = screen.availHeight;
window.resizeTo(x, y);
http://www.w3schools.com/jsref/tryit.asp?file
name=tryjsref_win_moveto
http://www.w3schools.com/jsref/tryit.asp?file
name=tryjsref_win_resizeto
50
Document and Location
• document object
– Provides some built-in arrays of specific objects
on the currently loaded Web page
document.links[0].href = "yahoo.com";
document.write(
"This is some <b>bold text</b>");
• document.location
– Used to access the currently open URL or redirect
the browser
document.location = "http://www.yahoo.com/";
51
Form Validation – Example
form-validation.html
function checkForm()
{
var valid = true;
if (document.mainForm.firstName.value == "") {
alert("Please type in your first name!");
document.getElementById("firstNameError").
style.display = "inline";
valid = false;
}
return valid;
}
…
<form name="mainForm" onsubmit="return checkForm()">
<input type="text" name="firstName" />
…
</form>
52
The Math Object
• The Math object provides some mathematical
math.html
functions
for (i=1; i<=20; i++) {
var x = Math.random();
x = 10*x + 1;
x = Math.floor(x);
document.write(
"Random number (" +
i + ") in range " +
"1..10 --> " + x +
"<br/>");
}
53
The Date Object
• The Date object provides date / calendar
functions dates.html
var now = new Date();
var result = "It is now " + now;
document.getElementById("timeField")
.innerText = result;
...
<p id="timeField"></p>
54
Timers: setTimeout()
• Make something happen (once) after a fixed
delay
var timer = setTimeout('bang()', 5000);
56
Timer – Example
timer-demo.html
<script type="text/javascript">
function timerFunc() {
var now = new Date();
var hour = now.getHours();
var min = now.getMinutes();
var sec = now.getSeconds();
document.getElementById("clock").value =
"" + hour + ":" + min + ":" + sec;
}
setInterval('timerFunc()', 1000);
</script>
<input type="text" id="clock" />
57
Debugging JavaScript
Debugging JavaScript
• Modern browsers have JavaScript console
where errors in scripts are reported
– Errors may differ across browsers
• Several tools to debug JavaScript
– Microsoft Script Editor
• Add-on for Internet Explorer
• Supports breakpoints, watches
• JavaScript statement debugger; opens the script
editor
59
Firebug
• Firebug – Firefox add-on for debugging
JavaScript, CSS, HTML
– Supports breakpoints, watches, JavaScript console
editor
– Very useful for CSS and HTML too
• You can edit all the document real-time: CSS, HTML, etc
• Shows how CSS rules apply to element
– Shows Ajax requests and responses
– Firebug is written mostly in JavaScript
60
Firebug (2)
61
JavaScript Console Object
• The console object exists only if there is a
debugging tool that supports it
– Used to write log messages at runtime
• Methods of the console object:
– debug(message)
– info(message)
– log(message)
– warn(message)
– error(message)
62
HTML, CSS and JavaScript Basics
Questions?