JavaScript

HTML Template Containing a Script

Template.html

<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.0//EN">
<HTML>
<HEAD>
   <TITLE> From HTML Template </TITLE>
</HEAD>

<BODY BGCOLOR="#FFF00">
<H1 ALIGN="CENTER"> Test Page </H1>
<HR><P>

<SCRIPT LANGUAGE="JavaScript">
<!-- hide from browsers

// script code goes here

//-->
</SCRIPT>

<P><HR>
</BODY>
</HTML>

DOM

JavaScript is an object-based language. Users can create objects or use built-in objects. An object can have constructors, properties, methods, and event handlers.

Creating Generic Objects

myCustomer = new Object();
myCustomer.firstName = "Bill";
myCustomer.lastName = "Ding";
myCustomer.id = 4289;

myCustomers = new Array(10);
myCustomers[0] = myCustomer;

Built-In Classes/Objects

JavaScript provides a view of the XML Document Object Model (DOM). There seems to be some confusion over terminology, though. In some cases objects seem to be classes.

Array
Button
Date
Document
Element
Form
Function
Link
Location
Math
Navigator
Number
Object
String
Text
TextArea
Window
etc.
Syntax

JavaScript syntax is pretty similar to Java syntax except functions and variables are untyped.

Variable Declarations and Expressions

var x = 100, y = "100", z;
z = x + x; // z = 200
z = y + y; // z = "100100"
Conditionals if (EXPRESSION) STATEMENT;
if (EXPRESSION) STATEMENT; else STATEMENT;
switch(KEY) {
   case VALUE: STATEMENT; ... break;
   case VALUE: STATEMENT; ... break;
   ...
   default: STATEMENT;
}
Blocks { STATEMENT; ... } Iterations while(EXPRESSION) STATEMENT;
for(var LCV = INIT; LCV < STOP; LCV++) STATEMENT;
do { STATEMENT; ... } while (EXPRESSION);
Functions function NAME(PARAMS) { STATEMENTS & DECLARATIONS & RETURN } Examples

Fibonacci Sequence

The Script

<SCRIPT LANGUAGE="JavaScript">
<!-- hide script

function fib(n)
{
   if (n <= 1)
      return 1;
   else
      return fib(n - 1) + fib(n - 2);
}

document.writeln("The Fibonacci sequence: <br>");
for(var i = 0; i < 10; i++)
{
   var count = fib(i);
   for(var j = 0; j < count; j++)
      document.write("+");
   document.writeln("<br>");
}

//-->
</SCRIPT>

Pascal's Triangle

The Script

<SCRIPT LANGUAGE="JavaScript">
<!-- hide script

// = n!
function fact(n)
{
   var result = 1;
   for(var i = n; i > 0; i--)
      result *= i;
   return result;
}

// = # of ways to choose m from n
function choose(n, m)
{
   if (m == 0 || m == n)
      return 1;
   else if (n < m)
      return 0;
   else if (m == 1 || m == n - 1)
      return n;
   else
   {
      var num = fact(n);
      var den = fact(m) * fact(n - m);
      return num/den;
   }
}

document.writeln("Pascal's Triangle: <br>");
for(var i = 0; i < 10; i++)
{
   for(var j = 0; j <= i; j++)
      document.write(choose(i, j) + '\t');
   document.writeln("<br>");
}

//-->
</SCRIPT>

Event Handling

Mouse Events

html

<html>
<head>
<title>Link Event Example</title>
</head>
<body>

<h1>Link Events</h1>

<a href="#" onClick="alert('Ooo, do it again!');">Click on me!</a><br>
<a href="#" onMouseOver="alert('Hee hee!');">Mouse over me!</a><br>

</body>
</html>

Example: Calculator

calc.html

<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.0//EN">
<HTML>
<HEAD>
   <TITLE> From HTML Template </TITLE>
</HEAD>

<BODY BGCOLOR="#FFF00">
<H1 ALIGN="CENTER"> Calculator </H1>
<HR><p>

<TABLE ALIGN="CENTER">
<FORM>
<INPUT TYPE=TEXT NAME=display SIZE=13>
</FORM>
</TABLE>

<TABLE ALIGN="CENTER" BORDER="1" >
<TR>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 1 " onClick="handleClick(1)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 2 " onClick="handleClick(2)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 3 " onClick="handleClick(3)">
   </FORM>
</TD>
</TR>

<TR>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 4 " onClick="handleClick(4)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 5 " onClick="handleClick(5)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 6 " onClick="handleClick(6)">
   </FORM>
</TD>
</TR>

<TR>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 7 " onClick="handleClick(7)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 8 " onClick="handleClick(8)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 9 " onClick="handleClick(9)">
   </FORM>
</TD>
</TR>

<TR>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" = " onClick="handleClick(-1)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" 0 " onClick="handleClick(0)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" + " onClick="handleClick(-2)">
   </FORM>
</TD>
</TR>

<TR>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" * " onClick="handleClick(-3)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" - " onClick="handleClick(-4)">
   </FORM>
</TD>
<TD>
   <FORM>
      <INPUT TYPE="BUTTON" VALUE=" / " onClick="handleClick(-5)">
   </FORM>
</TD>
</TR>
</TABLE>

<SCRIPT LANGUAGE="JavaScript">
<!-- hide script

var arg = 0, ans = 0, y = 0;
var resultBox = window.document.forms[0];

function handleClick(x)
{
   if (0 <= x)
   {
      arg = 10 * arg + x;
      resultBox.display.value = arg;
   }
   else
   {

      if (y == -2) // +
      {
         ans += arg;
      }
      else if (y == -3) // *
      {
         ans *= arg;
      }
      else if (y == -4) // -
      {
         ans -= arg;
      }
      else if (y == -5) // /
      {
         ans /= arg;
      }
      else
      {
         ans = arg;
      }
      if (x == -1) // =
      {
         //ans = arg;
         y = 0;
      }
      else
      {
         y = x;
      }
      arg = 0;
      resultBox.display.value = ans;
   }
}

//-->
</SCRIPT>

<P><HR>
</BODY>
</HTML>

Forms

Example: Craps

craps.html

<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.0//EN">
<HTML>
<HEAD>
   <TITLE> Craps </TITLE>
</HEAD>

<BODY BGCOLOR="#FFF00">
<H1 ALIGN="CENTER"> Want to play CRAPS? </H1>
<HR><p>

<FORM NAME="craps" onSubmit="roll(); return false;">
Die #1 <INPUT TYPE=TEXT NAME=die1 SIZE=10><BR>
Die #2 <INPUT TYPE=TEXT NAME=die2 SIZE=10><BR>
total <INPUT TYPE=TEXT NAME=total SIZE=10><BR>
point <INPUT TYPE=TEXT NAME=point SIZE=10>
<P><INPUT TYPE=SUBMIT VALUE="Roll">
</FORM>

<SCRIPT LANGUAGE="JavaScript">
<!-- hide script

var sum, point;
var newGame = true;

function roll()
{
   var crapsForm = window.document.craps;
   var r1 = Math.round(100 * Math.random()) % 6 + 1;
   var r2 = Math.round(100 * Math.random()) % 6 + 1;
   sum = r1 + r2;
   crapsForm.die1.value = "" + r1;
   crapsForm.die2.value = "" + r2;
   crapsForm.total.value = "" + sum;
   if (sum == 2 || sum == 3 || sum == 12)
   {
      newGame = true;
      window.alert("Sorry, you loose");
   }
   else if (sum == 7 || sum == 11)
   {
      if (newGame)
         window.alert("Congradulations, you win");
      else
      {
         newGame = true;
         window.alert("Sorry, you loose");
      }
   }
   else if (newGame)
   {
      newGame = false;
      point = sum;
      crapsForm.point.value = "" + point;
   }
   else if (sum == point)
   {
      newGame = true;
      window.alert("Congradulations, you win");
   }
   else
   {
      window.alert("Roll again");
   }

}
//-->
</SCRIPT>

<P><HR>
</BODY>
</HTML>

JavaScript Styles

Dynamic HTML

Event Monitoring

JavaScript Applications

HTML Customization

Dynamic HTML

Validating Forms

Manipulating Cookies

Interacting with Frames

Calling Java

Java Calling JavaScript