1   Intro to Javascript
Recap
   Programming Languages - set of instructions/code
    which tells a computer what it needs to do
     To   make software or drivers
   Scripting Languages -to perform some certain task.
     used   to create a website.
   Markup Languages - prepare the structure/design
    of a page
     used   to design a website
                                      2
    Client Side Scripting
3
    CS380
    Why use client-side programming?
4
       client-side scripting (JavaScript) benefits:
         usability:can modify a page without having to post
          back to the server (faster UI)
         efficiency: can make small, quick changes to page
          without waiting for server
         event-driven: can respond to user actions like clicks and
          key presses
    CS380
    What is Javascript?
6
       a lightweight programming language ("scripting
        language")
         used  to make web pages interactive
         insert dynamic text into HTML (ex: user name)
         react to events (ex: page load user click)
         get information about a user's computer (ex: browser
          type)
         perform calculations on user's computer (ex: form
          validation)
    CS380
   A Simple Script
<html>
<head><title>First JavaScript Page</title></head>
<body>
<h1>First JavaScript Page</h1>
<script type="text/javascript">
  document.write("<hr>");
  document.write("Hello World Wide Web");
  document.write("<hr>");
</script>
</body>
</html>
     Linking to a JavaScript file:
12
     script
     <script src="filename" type="text/javascript"></script>
                                                           HTML
        script tag should be placed in HTML page's head
        script code is stored in a separate .js file
        JS code can be placed directly in the HTML file's
         body or head (like CSS)
    Data Types
   Primitive data types
       Number: integer & floating-point numbers
       Boolean: true or false
       String: a sequence of alphanumeric characters
   Composite data types (or Complex data types or reference data
    types )
       Object: a named collection of data
       Array: a sequence of values (an array is actually a predefined object)
   Special data types
       Null: the only value is "null" – to represent nothing.
       Undefined: the only value is "undefined" – to represent the value of an
        unintialized variable
     Variables
14
     var name = expression;                                     JS
     var clientName = "Connie Client";
     var age = 32;
     var weight = 127.4;                                        JS
        variables are declared with the var keyword (case
         sensitive)
        types are not specified, but JS does have types
         ("loosely typed")
          can   find out a variable's type by calling typeof
     typeof operator
15
     <head>
     <script language=“JavaScript”>
              var x = “hello”, y;
              alert(“Variable x value is “ + typeof(x));
              alert(“Variable y value is “ + typeof(y));
              alert(“Variable x value is “ + typeof(z));
     </script>
     </head>
          An unary operator that tells the type of its
           operand.
            Returnsa string which can be "number", "string",
             "boolean", "object", "function", "undefined", and
             "null"
     Number type
16
     var enrollment = 99;
     var medianGrade = 2.8;
     var credits = 5 + 4 + (2 * 3);
                                                        JS
        integers and real numbers are the same type (no int
         vs. double)
        same operators: + - * / % ++ -- = += -= *= /=
         %=
        similar precedence to Java
        many operators auto-convert types: "2" * 3 is 6
     CS380
     Comments (same as Java)
17
     // single-line comment
     /* multi-line comment */
                                              JS
        identical to Java's comment syntax
        recall: 4 comment syntaxes
          HTML: <!-- comment -->
          CSS/JS/PHP: /* comment */
          Java/JS/PHP: // comment
          PHP: # comment
     CS380
         Special values: null and undefined
18
     var ned = null;
     var benson = 9;
     // at this point in the code,
     // ned is null
     // benson's 9
     // caroline is undefined
                                                           JS
        undefined : has not been declared, does not
         exist
        null : exists, but was specifically assigned an
         empty or null value
     CS380
     Null & Undefined example
19    <html>
      <head>
      <title> Null and Undefined example </title>
      <script language=“JavaScript”>
               var test1, test2 = null;
               alert(“No value assigned to the variable” + test1);
               alert(“A null value was assigned” + test2);
      </script>
      </head>
      <body> … </body>
      </html>
         Logical operators
20
        > < >= <= && || ! == != === !==
        most logical operators automatically convert types:
         5  < "7" is true
          42 == 42.0 is true
          "5.0" == 5 is true
        === and !== are strict equality tests; checks both
         type and value
          "5.0"   === 5 is false
     CS380
Type Conversion
   Converting a value to a number
    var numberVar = someVariable – 0;
   Converting a value to a string
    var stringVar = someVariable + "";
   Converting a value to a boolean
    var boolVar = !!someVariable;
  == vs ===
// Type conversion is performed before comparison
var v1 = ("5" == 5);    // true
// No implicit type conversion.
// True if only if both types and values are equal
var v2 = ("5" === 5);   // false
var v3 = (5 === 5.0); // true
var v4 = (true == 1); // true (true is converted to 1)
var v5 = (true == 2); // false (true is converted to 1)
var v6 = (true == "1") // true
     Boolean type
23
     var iLike190M = true;
     var ieIsGood = "IE6" > 0; // false
     if ("web devevelopment is great") { /* true */ }
     if (0) { /* false */ }
                                                                  JS
        any value can be used as a Boolean
          "false" values: 0, 0.0, NaN, "", null, and undefined
          "truth" values: anything else
        converting a value into a Boolean explicitly:
          var boolValue = Boolean(otherValue);
          var boolValue = !!(otherValue);
     Boolean value example
24
      <head>
      <script language=“JavaScript”>
             var result;
             result = (true*10 + false*7);
             alert(“true*10 + false*7 = “, result);
      </script>
      </head>
         The expression is converted to
           (1*10   + 0*7) = 10
         They are automatically converted.
         if/else statement (same as Java)
25
     if (condition) {
            statements;
     } else if (condition) {
            statements;
     } else {
            statements;
     }
                                                            JS
        identical structure to Java's if/else statement
        JavaScript allows almost anything as a condition
      for loop (same as Java)
26
     var sum = 0;
     for (var i = 0; i < 100; i++) {
            sum = sum + i;
     }                                           JS
     var s1 = "hello";
     var s2 = "";
     for (var i = 0; i < s.length; i++) {
            s2 += s1.charAt(i) + s1.charAt(i);
     }
     // s2 stores "hheelllloo"                   JS
     while loops (same as Java)
27
     while (condition) {
            statements;
     }                                                   JS
     do {
        statements;
     } while (condition);
                                                         JS
        break and continue keywords also behave as in
         Java
     Popup boxes
28
     alert("message"); // message
     confirm("message"); // returns true or false
     prompt("message"); // returns user input string
                                                       JS
  alert(), confirm(), and prompt()
<script type="text/javascript">
alert("This is an Alert method");
confirm("Are you OK?");
prompt("What is your name?");
prompt("How old are you?","20");
</script>
     Arrays
30
     var name = []; // empty array
     var name = [value, value, ..., value]; // pre-filled
     name[index] = value; // store element
                                                            JS
     var ducks = ["Huey", "Dewey", "Louie"];
     var stooges = []; // stooges.length is 0
     stooges[0] = "Larry"; // stooges.length is 1
     stooges[1] = "Moe"; // stooges.length is 2
     stooges[4] = "Curly"; // stooges.length is 5
     stooges[4] = "Shemp"; // stooges.length is 5
                                                            JS
     Array methods
31
     var a = ["Stef", "Jason"]; // Stef, Jason
     a.push("Brian"); // Stef, Jason, Brian
     a.unshift("Kelly"); // Kelly, Stef, Jason, Brian
     a.pop(); // Kelly, Stef, Jason
     a.shift(); // Stef, Jason
     a.sort(); // Jason, Stef
                                                              JS
        array serves as many data structures: list, queue,
         stack, ...
        methods: concat, join, pop, push, reverse, shift,
         slice, sort, splice, toString, unshift
          push and pop add / remove from back
          unshift and shift add / remove from front
          shift and pop return the element that is removed
     String type
32
     var   s = "Connie Client";
     var   fName = s.substring(0, s.indexOf(" ")); // "Connie"
     var   len = s.length; // 13
     var   s2 = 'Melvin Merchant';
                                                             JS
        methods: charAt, charCodeAt, fromCharCode,
         indexOf, lastIndexOf, replace, split,
         substring, toLowerCase, toUpperCase
          charAt   returns a one-letter String (there is no char type)
        length property (not a method as in Java)
        Strings can be specified with "" or ''
        concatenation with + :
         1   + 1 is 2, but "1" + 1 is "11"
      More about String
33
         escape sequences behave as in Java: \' \" \& \n \t
          \\
         converting between numbers and Strings:
     var count = 10;
     var s1 = "" + count; // "10"
     var s2 = count + " bananas, ah ah ah!"; // "10 bananas, ah
     ah ah!"
     var n1 = parseInt("42 is the answer"); // 42
     var n2 = parseFloat("booyah"); // NaN                 JS
        accessing the letters of a String:
     var firstLetter = s[0]; // fails in IE
     var firstLetter = s.charAt(0); // does work in IE
     var lastLetter = s.charAt(s.length - 1);              JS
     Splitting strings: split and join
34
     var s = "the quick brown fox";
     var a = s.split(" "); // ["the", "quick", "brown", "fox"]
     a.reverse(); // ["fox", "brown", "quick", "the"]
     s = a.join("!"); // "fox!brown!quick!the"
                                                            JS
        split breaks apart a string into an array using a
         delimiter
          can   also be used with regular expressions (seen later)
        join merges an array into a single string, placing a
         delimiter between them
         Math object
35
     var rand1to10 = Math.floor(Math.random() * 10 + 1);
     var three = Math.floor(Math.PI);
                                                           JS
        methods: abs, ceil, cos, floor, log,
         max, min, pow, random, round, sin,
         sqrt, tan
        properties: E, PI
     Event-driven programming
36
        split breaks apart a string into an array using a
         delimiter
          can   also be used with regular expressions (seen later)
        join merges an array into a single string, placing a
         delimiter between them
     Event-driven programming
37
        you are used to programs start with a main method
         (or implicit main like in PHP)
        JavaScript programs instead wait for user actions
         called events and respond to them
        event-driven programming: writing programs driven
         by user events
        Let's write a page with a clickable button that pops
         up a "Hello, World" window...
     Buttons
38
     <button>Click me!</button>                                 HTML
        button's text appears inside tag; can also contain
         images
        To make a responsive button or other UI control:
         1.   choose the control (e.g. button) and event (e.g. mouse
              1. click) of interest
         2.   write a JavaScript function to run when the event
              occurs
         3.   attach the function to the event on the control
     JavaScript functions
39
     function name() {
     statement ;
     statement ;
     ...
     statement ;
     }                                                    JS
     function myFunction() {
            alert("Hello!");
            alert("How are you?");
     }                                                    JS
        the above could be the contents of example.js
         linked to our HTML page
        statements placed into functions can be evaluated in
         response to user events
     Event handlers
40
     <element attributes onclick="function();">...
                                                                      HTML
     <button onclick="myFunction();">Click me!</button>
                                                                      HTML
        JavaScript functions can be set as event handlers
            when you interact with the element, the function will execute
        onclick is just one of many event HTML attributes we'll
         use
        but popping up an alert window is disruptive and
         annoying
            A better user experience would be to have the message
             appear on the page...
     Document Object Model (DOM)
41
        most JS code manipulates
         elements on an HTML page
        we can examine elements'
         state
            e.g. see whether a box is
             checked
        we can change state
            e.g. insert some new text into
             a div
        we can change styles
            e.g. make a paragraph red
     DOM element objects
42
     Accessing elements:
     document.getElementById
43
        document.getElementById returns the DOM object
         for an element with a given id
        can change the text inside most elements by setting
         the innerHTML property
        can change the text in form controls by setting the
         value property
     Accessing elements:
     document.getElementById
44
     var name = document.getElementById("id");
                                                                JS
     <button onclick="changeText();">Click me!</button>
     <span id="output">replace me</span>
     <input id="textbox" type="text" />                    HTML
     function changeText() {
            var span = document.getElementById("output");
            var textBox = document.getElementById("textbox");
            textbox.style.color = "red";
     }                                                          JS
     Changing element style:
     element.style
45
     Attribute          Property or style object
     color              color
     padding            padding
     background-color   backgroundColor
     border-top-width   borderTopWidth
     Font size          fontSize
     Font famiy         fontFamily
     Preetify
46
     function changeText() {
            //grab or initialize text here
           // font styles added by JS:
           text.style.fontSize = "13pt";
           text.style.fontFamily = "Comic Sans MS";
           text.style.color = "red"; // or pink?
     }                                                JS
              document.getElementById
   Used to change anything in your document (web
    page) that has an id
   Then, change different aspects of the element with
    that id:
    <img src = “zombie.jpg” height = “500” width = “300”
    alt = “eat your brain” id = “img1”>
     Use document.getElementById to change the:
       src
       height
       width
       alt
             getElementById()
<!DOCTYPE html>
   <html>
   <head>
         <meta charset= "utf-8" />
   </head>
          <body style = "background-color:#000000; color: red;">
                    <h1> Hello</h1>
                    <p> <img src = "ball.jpg" width = "100" height = "100"
                                alt = "a ball picture" id = "ball1"></p>
                    <script>
                    var x = prompt("What size should the ball's width be?")
                    document.getElementById("ball1").width = x
                    </script>
          </body>
</html>
getElementById to change CSS style:
 <!DOCTYPE html><html><head>             <meta charset= "utf-8" /></head>
         <body>
                   <p id = "firstp"> This is a paragraph</p>
                   <p id = "secondp">This is a second paragraph</p>
 <script>
            document.getElementById("firstp").style.color = "#9999FF";
            document.getElementById("firstp").style.fontSize = "120%";
            document.getElementById("firstp").style.backgroundColor="#332277";
            document.getElementById("firstp").style.textAlign = "right";
            document.getElementById("firstp").style.padding = "30px";
            document.getElementById("firstp").style.borderWidth = "8px";
            document.getElementById("firstp").style.borderColor = "green";
            document.getElementById("firstp").style.borderStyle = "inset";
 </script>
 </body></html>
                 innerHTML
The innerHTML is what is between the opening and the closing tag,
regardless of what the tag is:
<p id = “firstp”> This is the innerHTML text because it goes between the
opening and closing tag
</p>
Above, the innerHTML is: “This is the innerHTML text because it goes between
the opening and closing tag”
To change it:
document.getElementById(“firstp”).innerHTML = “new text for paragraph”
<h1 id = “firsth”>Title goes here </h1>
Above: innerHTML is: Title goes here
To change:
document.getElementById(“firsth”).innerHTML = “New Title”
                    innerHTML (cont.)
<p id = “linked”> <a href = “udel.edu” id = “firstlink”> link to udel </a>
</p>
What is the innerHTML of linked?
What is the innerHTML of firstlink?
How would you change the innerHTML of linked to a new link?
<ol id = “list1”>
         <li id = “firstItem”> cats </li>
         <li id=“seconditem”> dogs </li>
</ol>
What is the innerHTML of list1?
What is the innerHTML of firstitem?
How would you change the innerHTML of list1 to a new list?
           What about this one?
<script>
                           var PicArr = new Array()
                           PicArr[0] = "cute1.jpg"
                           PicArr[1] = "cute2.jpg"
                           PicArr[2] = "cute3.jpg"
                           PicArr[3] = "cute4.jpg"
                           PicArr[4] = "cute5.jpg"
                           var NameArr = new Array()
                           NameArr[0] = "lion cubs"
                           NameArr[1] = "hedgehogs"
                           NameArr[2] = "otter pup"
                           NameArr[3] = "kitten"
                           NameArr[4] = "panda babies“
                           var num = Math.floor(Math.random() * 5)
                           document.write("<p><img src = \" "+PicArr[num]+"\"></p>")
                           /*aside – where do the quotes start and stop here and why? */
                           document.write("<p>" + NameArr[num] + "</p>")
               </script>
  How about this?
<script>
var myArray = new Array()
myArray[0] = "hey"
myArray[1] = "hi"
myArray[2] = "wassup"
myArray[3] = "greetings"
myArray[4] = "howdie“
var num = Math.floor(Math.random() * 5)
document.write("<p> " + myArray[num] + "</p>")
</script>
             What does this do?
<script>                                 var ans = prompt(“pick a number between 0 and 4”)
           var EngArr = new Array()      var frenchans = prompt("What is the French translation of " +
           EngArr[0] = "dog"             EngArr[ans] + "?")
           EngArr[1] = "cat"
           EngArr[2] = "hello"           if (frenchans.toLowerCase() == FrenchArr[ans])
           EngArr[3] = "Thank you"       {           document.write("<p> You're right! </p>")
           EngArr[4] = "bunny"                       }
           var FrenchArr = new Array()   else
           FrenchArr[0] = "chien"        {
           FrenchArr[1] = "chat"         document.write("<p> Sorry. You're no good at this. </p>")
           FrenchArr[2] = "bonjour"                  }
           FrenchArr[3] = "merci"        </script>
           FrenchArr[4] = "lapin“