Content: JavaScript tying into XHTML and CSS
Objectives: To obtain a solid understanding of client-side scripting and how it can be used to create dynamic content within a webpage.
Coverage: Client side programming with JavaScript, access Web page elements (DOM elements and CSS attributes), and change their content or values.
Note that your files must be validated correctly in order to receive full credit. XHTML 1.0 Strict is expected (unless otherwise specified by the exercises).
Exercise 1
The following set of short questions will focus on getting you familiar with JavaScript functions. All functions and testing should appear in a single XHTML 1.0 Strict page.
All your JavaScript functions must be declared in the document head section and each functions name must be as specified below. To demonstrate the functionality of each method, you must make function calls in the document body. Include a heading (h1… h6) that indicates which function is being tested before each function demonstration. The use of Global Variables is forbidden!
A. Function: addNumbers
Parameter(s): Array of numbers
Each element in the array must be added and the summation (answer) must be returned.
B. Function: getCurrentDate
Parameter(s): None
Retrieve the current date in the format similar to: Monday, May 10, 2010 and return it.
C. Function: arrayToString
Parameter(s): Array of words
All the elements of the array must be concatenated into a single string and returned.
D. Function: findMaxNumber
Parameter(s): None (Hint: Make use of the arguments array – page 167 in course book)
From the arguments array, find the number element that is the largest and return it.
E. Function: getDigits
Parameter(s): A String
Scan the string and find all the digits (0-9), concatenate them into a string in the order that they are found and return the string of numbers.
F. Function: reverseString
Parameter(s): A String
Reverse the entire string (character by character) and return the resulting string.
Exercise 2
Part 1
Given the following Regular Expressions, explain in detail the pattern accepted by each. Pay attention to all the characters being used. Your answers need not appear within an XHTML page.
A. /[a-z]*\s[0-9]*/
B. /\d+\.\d*/
C. /^\d{3}\-\d{4}$/
D. /^[A-Z]\d[A-Z]\-\d[A-Z]\d/
E. /(July|August)\s+\d{1,2}(\s|,)\d{4}/g
Part 2
Given the following descriptions, write a possible regular expression that expresses each of them.
Your answers need not appear within an XHTML page.
A. Matching a Name - First name must begin with a capital letter and be at least 2 characters long followed by either a ( , ) or a whitespace. The Last Name should begin with a capital letter and be at least 2 characters long but no greater than 20 characters long.
B. Matching an Email – First section should match word characters of any length except zero and must be followed by a @ symbol. The last section should match word characters of any length except zero and must not include an underscore ( _ ). A single period ( . ) must follow along with the word com at the end. No spacing is allowed within the pattern. The pattern need not match exactly (pattern can be a substring of a larger string).
Exercise 3
Given the following XHTML page:
Exercise 3 User Information:
Create an embedded JavaScript function named getUserInfo that prompts the user with the following two questions after the XHTML page has loaded:
• What is your full name?
• How old are you?
The function should then build a string in the form of:
Hi, my name is FULL-NAME and I’m XX years old.
The string must then be inserted into the container div with id: content.
Note that your XHTML page must validate as 1.0 Strict – as such, make any needed additions to the XHTML code above.
Exercise 4
Copy and paste the following XHTML code into a new document:
Exercise 4 Write JavaScript code that is executed during form submission to calculate the cost of each book (based on quantity specified) and the overall total cost. The results should be displayed on the same page beneath the form submission button. Use any CSS at your discretion if desired.
All JavaScript code must be external. If any fields are left blank or do not contain a number, an alert box should display an appropriate error message upon form submission.
Note that your XHTML page must validate as 1.0 Strict – as such, make any needed additions or changes to the XHTML code above.
Exercise 5
Copy and paste the following XHTML code into a new document:
Exercise 6 Search a Course
Calculus I
Calculus II
Data Structures & Algorithms
Software Engineering I
Advanced C++
Computer Graphics
The above XHTML code validates as 1.0 Strict and must not be modified in anyway.
In an external JavaScript file write code that, upon form submission, scans the list of courses for a match (case should be insensitive). If a match is found, change the div’s background color to yellow. If no match is found, add the course name to the bottom of the course list (Hint: Read into DOM and Nodes). If the search field is left blank, return focus to the search field and display an alert box with an appropriate message. New searches must clear any yellow background before anything.
Exercise 6: Project
The last exercise of each assignment will be continuous from assignment to assignment and will have the goal of building an e-store website by the end of the course.
Date & Time
In the header area of your website, use JavaScript to display the current date and time. The time should automatically refresh every second.
Items on Sell
In the inside content area (see assignment 1) of your sites home page, you should create a small list of items that your store will be selling (your website can be a seller of whatever products you’d like). Each item should have a small thumbnail picture, an associated price, short description and a form button labeled “Add to Cart”. The button need not do anything when clicked at the moment.
Registration / Sign-up
In the side menu area (see assignment 1) add a link labeled “Register”. When clicked, the link should direct the user to a new page: register.html. This new page should include all the elements of your home page. In the inside content area, create a form with the following fields:
Text Fields: First name, Last name, Email Address, Phone Number
Password Fields: Password, Confirm Password
Use JavaScript to create some basic client-side validation. When the forms submit button is clicked, you should check to make sure that none of the fields are left blank. You must also check to see if both passwords match entirely. If validation fails, use an alert box to display an appropriate message that informs the user on what needs to be corrected. If validation is successful, do nothing for the time being.