SlideShare a Scribd company logo
Svetlin Nakov Telerik Mobile Development Course mobiledevcourse.telerik.com Technical Trainer http:// www.nakov.com
Table of Contents What is DHTML? DHTML Technologies XHTML, CSS, JavaScript, DOM
Table of Contents (2) Introduction to JavaScript What is JavaScript Implementing JavaScript into Web pages In <head> part In <body> part In external  .js  file
Table of Contents (3) 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
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
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.
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
JavaScript Advantages JavaScript allows interactivity such as: Implementing form validation React to user actions, e.g. handle keys Changing an image on moving mouse over it 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
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)
The First Script first-script.html <html> <body> <script type=&quot;text/javascript&quot;> alert('Hello JavaScript!'); </script> </body> </html>
Another Small Example small-example.html <html> <body> <script type=&quot;text/javascript&quot;> document.write('JavaScript rulez!'); </script> </body> </html>
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 Highly recommended The  .js  files get cached by the browser <script src=&quot;scripts.js&quot; type=&quot;text/javscript&quot;> <!– code placed here will not be executed! --> </script>
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 &quot;event handlers&quot; via tag attributes Executed when the event is fired by the browser <img src=&quot;logo.gif&quot; onclick=&quot;alert('clicked!')&quot; />
Calling a JavaScript Function from Event Handler – Example image-onclick.html <html> <head> <script type=&quot;text/javascript&quot;> function test (message) { alert(message); } </script> </head> <body> <img src=&quot;logo.gif&quot; onclick=&quot;test('clicked!')&quot; /> </body> </html>
Using External Script Files Using external script files: External JavaScript file: <html> <head> <script src=&quot;sample.js&quot; type=&quot;text/javascript&quot;> </script> </head> <body> <button onclick=&quot;sample()&quot; value=&quot;Call JavaScript function from sample.js&quot; /> </body> </html> function sample() { alert('Hello from sample.js!') } external-JavaScript.html sample.js The <script> tag is always empty.
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)
Data Types JavaScript data types: Numbers (integer, floating-point) Boolean (true / false) String type – string of characters Arrays Associative arrays (hash tables) var myName = &quot;You can use both single or double quotes for strings&quot;; var my_array = [1, 5.3, &quot;aaa&quot;]; var my_hash = {a:2, b:3, c:&quot;text&quot;};
Everything is Object Every variable can be considered as object For example strings and arrays have member functions: var test = &quot;some string&quot;; alert(test[7]); // shows letter 'r' alert(test.charAt(5)); // shows letter 's' alert(&quot;test&quot;.charAt(1)); //shows letter 'e' alert(&quot;test&quot;.substring(1,3)); //shows 'es' var arr = [1,3,4]; alert (arr.length); // shows 3 arr.push(7); // appends 7 to end of array alert (arr[3]); // shows 7 objects.html
String Operations The  +  operator joins strings What is &quot;9&quot; + 9? Converting string to number: string1 = &quot;fat &quot;; string2 = &quot;cats&quot;; alert(string1 + string2);  // fat cats alert(&quot;9&quot; + 9);  // 99 alert(parseInt(&quot;9&quot;) + 9);  // 18
Arrays Operations and Properties Declaring new empty array: Declaring an array holding few elements: Appending an element / getting the last element: Reading the number of elements (array length): Finding element's index in the array: var arr = new Array(); var arr = [1, 2, 3, 4, 5]; arr.push(3); var element = arr.pop(); arr.length; arr.indexOf(1);
Standard Popup Boxes Alert box with text and [OK] button Just a message shown in a dialog box: Confirmation box Contains text, [OK] button and [Cancel] button: Prompt box Contains text, input field with default value: alert(&quot;Some text here&quot;); confirm(&quot;Are you sure?&quot;); prompt (&quot;enter amount&quot;, 10);
Sum of Numbers – Example sum-of-numbers .html <html> <head> <title>JavaScript Demo</title> <script type=&quot;text/javascript&quot;> function calcSum() { value1 = parseInt(document.mainForm.textBox1.value); value2 = parseInt(document.mainForm.textBox2.value); sum = value1 + value2; document.mainForm.textBoxSum.value = sum; } </script> </head>
Sum of Numbers – Example   (2) sum-of-numbers .html  (cont.) <body> <form name=&quot;mainForm&quot;> <input type=&quot;text&quot; name=&quot;textBox1&quot; /> <br/> <input type=&quot;text&quot; name=&quot;textBox2&quot; /> <br/> <input type=&quot;button&quot; value=&quot;Process&quot;  onclick=&quot;javascript: calcSum()&quot; /> <input type=&quot;text&quot; name=&quot;textBoxSum&quot; readonly=&quot;readonly&quot;/> </form> </body> </html>
JavaScript Prompt – Example prompt.html price = prompt(&quot;Enter the price&quot;, &quot;10.00&quot;); alert('Price + VAT = ' + price * 1.2);
Conditional Statement ( if ) Greater than Symbol Meaning > < Less than >= Greater than or equal to Less than or equal to == Equal != Not equal unitPrice = 1.30; if (quantity > 100) {  unitPrice = 1.20; }
Conditional Statement ( if ) (2) The condition may be of Boolean or integer type: var a = 0; var b = true; if (typeof(a)==&quot;undefined&quot; || typeof(b)==&quot;undefined&quot;) { document.write(&quot;Variable a or b is undefined.&quot;); } else if (!a && b) { document.write(&quot;a==0; b==true;&quot;); } else { document.write(&quot;a==&quot; + a + &quot;; b==&quot; + b + &quot;;&quot;); } conditional-statements.html
Switch Statement The  switch  statement works like in C#: switch (variable) { case 1:  // do something break; case 'a': // do something else break; case 3.14: // another code break; default: // something completely different } switch-statements.html
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
Functions  Code structure – splitting code into parts Data comes in, processed, result returned function average(a, b, c) { var total; total = a+b+c; return total/3; } Parameters come in here. Declaring variables is optional. Type is never declared. Value returned here.
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() { var sum = 0; for (var i = 0; i < arguments.length; i ++) sum += parseInt(arguments[i]); return sum; } alert(sum(1, 2, 4)); functions-demo.html
Document Object Model (DOM)
Document Object Model (DOM) Every HTML element is accessible via the JavaScript DOM API Most DOM objects can be manipulated by the programmer The event model lets a document to react when the user does something on the page Advantages Create interactive pages Updates the objects of a page without reloading it
Accessing Elements Access elements via their ID attribute Via the name attribute Via tag name Returns array of descendant  <img>  elements of the element &quot; el &quot; var elem = document.getElementById(&quot;some_id&quot;) var arr = document.getElementsByName(&quot;some_name&quot;) var imgTags = el.getElementsByTagName(&quot;img&quot;)
DOM Manipulation Once we access an element, we can read and write its attributes function change(state) { var lampImg = document.getElementById(&quot;lamp&quot;); lampImg.src = &quot;lamp_&quot; + state + &quot;.png&quot;; var statusDiv = document.getElementById(&quot;statusDiv&quot;); statusDiv.innerHTML = &quot;The lamp is &quot; + state&quot;; } … <img src=&quot;test_on.gif&quot; onmouseover=&quot;change('off')&quot; onmouseout=&quot;change('on')&quot; /> DOM-manipulation.html
Common Element Properties Most of the properties are derived from the HTML attributes of the tag E.g.  id ,  name ,  href ,  alt ,  title ,  src , etc… style  property – allows modifying the CSS styles of the element Corresponds to the inline style of the element Not the properties derived from embedded or external CSS rules Example:  style.width ,  style.marginTop ,  style.backgroundImage
Common Element Properties (2) className  – the  class  attribute of the tag innerHTML  – holds all the entire HTML code inside the element Read-only properties with information for the current element and its state tagName ,  offsetWidth ,  offsetHeight ,  scrollHeight ,   scrollTop ,  nodeType , etc…
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
Accessing Elements through the DOM Tree – Example Warning: may not return what you expected due to Browser differences var el = document.getElementById('div_tag'); alert (el.childNodes[0].value); alert (el.childNodes[1]. getElementsByTagName('span').id); … <div id=&quot;div_tag&quot;> <input type=&quot;text&quot; value=&quot;test text&quot; /> <div> <span id=&quot;test&quot;>test span</span> </div> </div> accessing-elements-demo.html
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: Can be accessed through the DOM: <img src=&quot;test.gif&quot; onclick=&quot;imageClicked()&quot; /> var img = document.getElementById(&quot;myImage&quot;); img.onclick = imageClicked;
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
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
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
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
on l oad  Event  – Example onload   event <html> <head> <script type=&quot;text/javascript&quot;> function greet() { alert(&quot;Loaded.&quot;); } </script> </head>  <body onload=&quot;greet()&quot; > </body> </html> onload.html
The Built-In Browser Objects
Built-in Browser Objects The browser provides some read-only data via: window The top node of the DOM tree Represents the browser's window document holds information the current loaded document screen Holds the user’s display properties browser Holds information about the browser
DOM Hierarchy – Example window navigator screen document history location form button form form
Opening New Window – Example w indow .open() var newWindow = window.open(&quot;&quot;, &quot;sampleWindow&quot;, &quot;width=300, height=100, menubar=yes, status=yes, resizable=yes&quot;); newWindow.document.write( &quot;<html><head><title> Sample Title</title> </head><body><h1>Sample Text</h1></body>&quot;); newWindow.status =  &quot;Hello folks&quot;; window-open.html
The Navigator Object alert(window.navigator.userAgent); The navigator in the browser window The  userAgent  (browser ID) The browser window
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);
Document and Location document  object Provides some built-in arrays of specific objects   on  the currently loaded Web page document.location Used to access the currently open URL or redirect the browser document.links[0].href = &quot;yahoo.com&quot;; document.write( &quot;This is some <b>bold text</b>&quot;); document.location = &quot;http://www.yahoo.com/&quot;;
Form Validation – Example function checkForm() { var valid = true; if (document.mainForm.firstName.value == &quot;&quot;) { alert(&quot;Please type in your first name!&quot;); document.getElementById(&quot;firstNameError&quot;). style.display = &quot;inline&quot;; valid = false; } return valid; } … <form name=&quot;mainForm&quot; onsubmit=&quot;return checkForm()&quot;> <input type=&quot;text&quot; name=&quot;firstName&quot; /> … </form> form-validation.html
The Math Object The  Math  object provides some mathematical functions for (i=1; i<=20; i++) { var x = Math.random(); x = 10*x + 1; x = Math.floor(x); document.write( &quot;Random number (&quot; + i + &quot;) in range &quot; +  &quot;1..10 --> &quot; + x +  &quot;<br/>&quot;); } math.html
The Date Object The  Date  object provides date / calendar functions var now = new Date(); var result = &quot;It is now &quot; + now; document.getElementById(&quot;timeField&quot;) .innerText = result; ... <p id=&quot;timeField&quot;></p> dates.html
Timers:  setTimeout () Make something happen (once) after a fixed delay var timer = setTimeout('bang()', 5000); clearTimeout(timer); 5 seconds after this statement executes, this function is called Cancels the timer
Timers:  setInterval () Make something happen repeatedly at fixed intervals var timer = setInterval('clock()', 1000); clearInterval(timer); This function is called continuously per 1 second. Stop the timer.
Timer – Example <script type=&quot;text/javascript&quot;> function timerFunc() { var now = new Date(); var hour = now.getHours(); var min = now.getMinutes(); var sec = now.getSeconds(); document.getElementById(&quot;clock&quot;).value =  &quot;&quot; + hour + &quot;:&quot; + min + &quot;:&quot; + sec; } setInterval('timerFunc()', 1000); </script> <input type=&quot;text&quot; id=&quot;clock&quot; /> timer-demo.html
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
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
Firebug (2)
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)
Introduction to JavaScript Questions?
Exercises Create an HTML page that has two text fields  (first name and last name) and a button. When the user clicks the button, a message should show the text in the text fields followed by the current time.  Create a Web page that asks the user about his name and says goodbye to him when leaving the page. Modify the previous HTML page to have a text field for email address and on clicking the button check if the email is valid (it should follow the format  <something>@<host>.<domain> ). Create a Web page that shows 20 <div> elements with random location, size and color.
Exercises (2) Create a drop-down menu Use table for the main menu blocks Use hidden  <DIV>  elements ( display:   none ;  position:absolute ;  top:30px ) Use  JavaScript  and  on m ouse o ver  and  onmouseout  event to change display: none/block
Exercises (3) Create a DTHML page that has  <div>   containing a text that scrolls from right to left automatically Use  setInterval( )  function to move the text at an interval of 500 ms Use  overflow:hidden  for the  <div> Use  scrollLeft  and  scrollWidth  properties of the  <div>  element

More Related Content

JavaScript

  • 1. Svetlin Nakov Telerik Mobile Development Course mobiledevcourse.telerik.com Technical Trainer http:// www.nakov.com
  • 2. Table of Contents What is DHTML? DHTML Technologies XHTML, CSS, JavaScript, DOM
  • 3. Table of Contents (2) 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 (3) 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
  • 6. 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.
  • 9. 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 Changing an image on moving mouse over it 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=&quot;text/javascript&quot;> alert('Hello JavaScript!'); </script> </body> </html>
  • 13. Another Small Example small-example.html <html> <body> <script type=&quot;text/javascript&quot;> 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 Highly recommended The .js files get cached by the browser <script src=&quot;scripts.js&quot; type=&quot;text/javscript&quot;> <!– code placed here will not be executed! --> </script>
  • 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 &quot;event handlers&quot; via tag attributes Executed when the event is fired by the browser <img src=&quot;logo.gif&quot; onclick=&quot;alert('clicked!')&quot; />
  • 16. Calling a JavaScript Function from Event Handler – Example image-onclick.html <html> <head> <script type=&quot;text/javascript&quot;> function test (message) { alert(message); } </script> </head> <body> <img src=&quot;logo.gif&quot; onclick=&quot;test('clicked!')&quot; /> </body> </html>
  • 17. Using External Script Files Using external script files: External JavaScript file: <html> <head> <script src=&quot;sample.js&quot; type=&quot;text/javascript&quot;> </script> </head> <body> <button onclick=&quot;sample()&quot; value=&quot;Call JavaScript function from sample.js&quot; /> </body> </html> function sample() { alert('Hello from sample.js!') } external-JavaScript.html sample.js The <script> tag is always empty.
  • 19. 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 Arrays Associative arrays (hash tables) var myName = &quot;You can use both single or double quotes for strings&quot;; var my_array = [1, 5.3, &quot;aaa&quot;]; var my_hash = {a:2, b:3, c:&quot;text&quot;};
  • 21. Everything is Object Every variable can be considered as object For example strings and arrays have member functions: var test = &quot;some string&quot;; alert(test[7]); // shows letter 'r' alert(test.charAt(5)); // shows letter 's' alert(&quot;test&quot;.charAt(1)); //shows letter 'e' alert(&quot;test&quot;.substring(1,3)); //shows 'es' var arr = [1,3,4]; alert (arr.length); // shows 3 arr.push(7); // appends 7 to end of array alert (arr[3]); // shows 7 objects.html
  • 22. String Operations The + operator joins strings What is &quot;9&quot; + 9? Converting string to number: string1 = &quot;fat &quot;; string2 = &quot;cats&quot;; alert(string1 + string2); // fat cats alert(&quot;9&quot; + 9); // 99 alert(parseInt(&quot;9&quot;) + 9); // 18
  • 23. Arrays Operations and Properties Declaring new empty array: Declaring an array holding few elements: Appending an element / getting the last element: Reading the number of elements (array length): Finding element's index in the array: var arr = new Array(); var arr = [1, 2, 3, 4, 5]; arr.push(3); var element = arr.pop(); arr.length; arr.indexOf(1);
  • 24. Standard Popup Boxes Alert box with text and [OK] button Just a message shown in a dialog box: Confirmation box Contains text, [OK] button and [Cancel] button: Prompt box Contains text, input field with default value: alert(&quot;Some text here&quot;); confirm(&quot;Are you sure?&quot;); prompt (&quot;enter amount&quot;, 10);
  • 25. Sum of Numbers – Example sum-of-numbers .html <html> <head> <title>JavaScript Demo</title> <script type=&quot;text/javascript&quot;> 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=&quot;mainForm&quot;> <input type=&quot;text&quot; name=&quot;textBox1&quot; /> <br/> <input type=&quot;text&quot; name=&quot;textBox2&quot; /> <br/> <input type=&quot;button&quot; value=&quot;Process&quot; onclick=&quot;javascript: calcSum()&quot; /> <input type=&quot;text&quot; name=&quot;textBoxSum&quot; readonly=&quot;readonly&quot;/> </form> </body> </html>
  • 27. JavaScript Prompt – Example prompt.html price = prompt(&quot;Enter the price&quot;, &quot;10.00&quot;); alert('Price + VAT = ' + price * 1.2);
  • 28. Conditional Statement ( if ) Greater than Symbol Meaning > < Less than >= Greater than or equal to Less than or equal to == Equal != Not equal unitPrice = 1.30; if (quantity > 100) { unitPrice = 1.20; }
  • 29. Conditional Statement ( if ) (2) The condition may be of Boolean or integer type: var a = 0; var b = true; if (typeof(a)==&quot;undefined&quot; || typeof(b)==&quot;undefined&quot;) { document.write(&quot;Variable a or b is undefined.&quot;); } else if (!a && b) { document.write(&quot;a==0; b==true;&quot;); } else { document.write(&quot;a==&quot; + a + &quot;; b==&quot; + b + &quot;;&quot;); } conditional-statements.html
  • 30. Switch Statement The switch statement works like in C#: switch (variable) { case 1: // do something break; case 'a': // do something else break; case 3.14: // another code break; default: // something completely different } switch-statements.html
  • 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 function average(a, b, c) { var total; total = a+b+c; return total/3; } Parameters come in here. Declaring variables is optional. Type is 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() { var sum = 0; for (var i = 0; i < arguments.length; i ++) sum += parseInt(arguments[i]); return sum; } alert(sum(1, 2, 4)); functions-demo.html
  • 35. Document Object Model (DOM) Every HTML element is accessible via the JavaScript DOM API Most DOM objects can be manipulated by the programmer The event model lets a document to react when the user does something on the page Advantages Create interactive pages Updates the objects of a page without reloading it
  • 36. Accessing Elements Access elements via their ID attribute Via the name attribute Via tag name Returns array of descendant <img> elements of the element &quot; el &quot; var elem = document.getElementById(&quot;some_id&quot;) var arr = document.getElementsByName(&quot;some_name&quot;) var imgTags = el.getElementsByTagName(&quot;img&quot;)
  • 37. DOM Manipulation Once we access an element, we can read and write its attributes function change(state) { var lampImg = document.getElementById(&quot;lamp&quot;); lampImg.src = &quot;lamp_&quot; + state + &quot;.png&quot;; var statusDiv = document.getElementById(&quot;statusDiv&quot;); statusDiv.innerHTML = &quot;The lamp is &quot; + state&quot;; } … <img src=&quot;test_on.gif&quot; onmouseover=&quot;change('off')&quot; onmouseout=&quot;change('on')&quot; /> DOM-manipulation.html
  • 38. Common Element Properties Most of the properties are derived from the HTML attributes of the tag E.g. id , name , href , alt , title , src , etc… style property – allows modifying the CSS styles of the element Corresponds to the inline style of the element Not the properties derived from embedded or external CSS rules Example: style.width , style.marginTop , style.backgroundImage
  • 39. Common Element Properties (2) className – the class attribute of the tag innerHTML – holds all the entire HTML code inside the element Read-only properties with information for the current element and its state tagName , offsetWidth , offsetHeight , scrollHeight , scrollTop , nodeType , etc…
  • 40. 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
  • 41. Accessing Elements through the DOM Tree – Example Warning: may not return what you expected due to Browser differences var el = document.getElementById('div_tag'); alert (el.childNodes[0].value); alert (el.childNodes[1]. getElementsByTagName('span').id); … <div id=&quot;div_tag&quot;> <input type=&quot;text&quot; value=&quot;test text&quot; /> <div> <span id=&quot;test&quot;>test span</span> </div> </div> accessing-elements-demo.html
  • 42. The HTML DOM Event Model
  • 43. 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: Can be accessed through the DOM: <img src=&quot;test.gif&quot; onclick=&quot;imageClicked()&quot; /> var img = document.getElementById(&quot;myImage&quot;); img.onclick = imageClicked;
  • 44. 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
  • 45. 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
  • 46. 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
  • 47. 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
  • 48. on l oad Event – Example onload event <html> <head> <script type=&quot;text/javascript&quot;> function greet() { alert(&quot;Loaded.&quot;); } </script> </head>  <body onload=&quot;greet()&quot; > </body> </html> onload.html
  • 50. Built-in Browser Objects The browser provides some read-only data via: window The top node of the DOM tree Represents the browser's window document holds information the current loaded document screen Holds the user’s display properties browser Holds information about the browser
  • 51. DOM Hierarchy – Example window navigator screen document history location form button form form
  • 52. Opening New Window – Example w indow .open() var newWindow = window.open(&quot;&quot;, &quot;sampleWindow&quot;, &quot;width=300, height=100, menubar=yes, status=yes, resizable=yes&quot;); newWindow.document.write( &quot;<html><head><title> Sample Title</title> </head><body><h1>Sample Text</h1></body>&quot;); newWindow.status = &quot;Hello folks&quot;; window-open.html
  • 53. The Navigator Object alert(window.navigator.userAgent); The navigator in the browser window The userAgent (browser ID) The browser window
  • 54. 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);
  • 55. Document and Location document object Provides some built-in arrays of specific objects on the currently loaded Web page document.location Used to access the currently open URL or redirect the browser document.links[0].href = &quot;yahoo.com&quot;; document.write( &quot;This is some <b>bold text</b>&quot;); document.location = &quot;http://www.yahoo.com/&quot;;
  • 56. Form Validation – Example function checkForm() { var valid = true; if (document.mainForm.firstName.value == &quot;&quot;) { alert(&quot;Please type in your first name!&quot;); document.getElementById(&quot;firstNameError&quot;). style.display = &quot;inline&quot;; valid = false; } return valid; } … <form name=&quot;mainForm&quot; onsubmit=&quot;return checkForm()&quot;> <input type=&quot;text&quot; name=&quot;firstName&quot; /> … </form> form-validation.html
  • 57. The Math Object The Math object provides some mathematical functions for (i=1; i<=20; i++) { var x = Math.random(); x = 10*x + 1; x = Math.floor(x); document.write( &quot;Random number (&quot; + i + &quot;) in range &quot; + &quot;1..10 --> &quot; + x + &quot;<br/>&quot;); } math.html
  • 58. The Date Object The Date object provides date / calendar functions var now = new Date(); var result = &quot;It is now &quot; + now; document.getElementById(&quot;timeField&quot;) .innerText = result; ... <p id=&quot;timeField&quot;></p> dates.html
  • 59. Timers: setTimeout () Make something happen (once) after a fixed delay var timer = setTimeout('bang()', 5000); clearTimeout(timer); 5 seconds after this statement executes, this function is called Cancels the timer
  • 60. Timers: setInterval () Make something happen repeatedly at fixed intervals var timer = setInterval('clock()', 1000); clearInterval(timer); This function is called continuously per 1 second. Stop the timer.
  • 61. Timer – Example <script type=&quot;text/javascript&quot;> function timerFunc() { var now = new Date(); var hour = now.getHours(); var min = now.getMinutes(); var sec = now.getSeconds(); document.getElementById(&quot;clock&quot;).value = &quot;&quot; + hour + &quot;:&quot; + min + &quot;:&quot; + sec; } setInterval('timerFunc()', 1000); </script> <input type=&quot;text&quot; id=&quot;clock&quot; /> timer-demo.html
  • 63. 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
  • 64. 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
  • 66. 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)
  • 68. Exercises Create an HTML page that has two text fields (first name and last name) and a button. When the user clicks the button, a message should show the text in the text fields followed by the current time. Create a Web page that asks the user about his name and says goodbye to him when leaving the page. Modify the previous HTML page to have a text field for email address and on clicking the button check if the email is valid (it should follow the format <something>@<host>.<domain> ). Create a Web page that shows 20 <div> elements with random location, size and color.
  • 69. Exercises (2) Create a drop-down menu Use table for the main menu blocks Use hidden <DIV> elements ( display: none ; position:absolute ; top:30px ) Use JavaScript and on m ouse o ver and onmouseout event to change display: none/block
  • 70. Exercises (3) Create a DTHML page that has <div> containing a text that scrolls from right to left automatically Use setInterval( ) function to move the text at an interval of 500 ms Use overflow:hidden for the <div> Use scrollLeft and scrollWidth properties of the <div> element