Efficient Web Development using Functions in JavaScript | Lecture Notes
450 likes | 574 Views
Learn how to optimize web scripting by utilizing functions for modularization, reusability, and error correction. This guide covers function declaration, parameters, and working with image objects in JavaScript.
Efficient Web Development using Functions in JavaScript | Lecture Notes
E N D
Presentation Transcript
Web-based Application Development Lecture 13 February 21, 2006 Anita Raja
Programming the Web using XHTML and JavaScript Chapter 9 Functions and Variables
Using Functions • Repetitive code • Same code needed in more than one place in a script • Type the code over and over • Copy and paste - still not very efficient • Script gets longer and longer • What if you make a mistake?
Using Functions • We need a way to: • Package that code in one place • Refer to the package whenever/wherever • Modularization • Re-useable • Self-contained • Reduce script size • Make it easier to find and correct errors or make changes later
Using Functions • Objects are modules • Self-contained • Data (properties) • Code (methods) • Re-useable • Can invoke a method: • At any point in a script • Repeatedly • Can we create our own methods?
Using Functions • Generally, a function is simply a group of one or more statements • In JavaScript specifically, a function is • A method … • of the window object • Functions are created by “declaring” them
Required Using Functions • Syntax for function declaration: function someName() { … JavaScript statements … } Reserved word Required
Using Functions • Good practice to declare functions in the <head> section • Ensures browser “knows” of the function • Use functions in the <body> section • “Calling” a function similar to calling a method except object name not required: someName() window.someName()
Using Functions 2 <html> <head> <title> … </title> <script …> function someName() { … } </script> </head> <body> … <script …> someName() </script> … <body> </html> 1 5 3 4 6
Using Functions • Ch09-Ex-01.htm
Using Functions <body> some HTML function statement 1 function statement 2 … some more HTML </body> <body> some HTML a function call some more HTML </body>
Using Functions • Any number of functions can be declared in one <script> element (within the <head> section) • Functions are executed in the order in which they’re called, not the order in which they’re declared.
Parameters • Parameter/argument: the means by which data is supplied to a method confirm(“Are you sure?”) ultraJava.changeGrind(“coarse”) • Why parameters? • General code is re-useable
Parameters function printGreeting() { alert(“Hello, Fred”)} function printGreeting() { alert(“Hello, Mary”)} function greetFred() { alert(“Hello, Fred”) } function greetMary() { alert(“Hello, Mary”) }
Parameters • Need a printGreeting function that uses a parameter function printGreeting(personName) { alert(“Hello ,” + personName) } • Call by personName=“Fred” printGreeting(personName)
Parameters • “Passing” a parameter printGreeting Main program var personName … personName=“Fred” … printGreeting(personName) … personName Fred Fred
Parameters • Ch09-Ex-02.htm
Parameters • Multiple parameters • Declaring: function sample(a, b, c, d) • Calling sample(“Bob”,”Mary”,user1, user2)
Parameters • One-for-one correspondence between parameter order in declaration and in call Declaration: function sample(a, b, c, d) Call: sample(“Bob”,”Mary”,user1, user2)
Parameters • Ch09-Ex-03.htm
Image Objects • Window object hierarchy • Images are children of the document object • Numbered: document.images[0] document.images[1] … document.images[n] Square brackets required Numbering begins with zero
Image Objects • Images loaded in the order they appear in the HTML document • Image numbers are assigned in the same order • First image = document.images[0] • Second image = document.images[1]
Image Objects • Images have attributes: • height • width • src • Attribute references: • document.images[0].width • document.images[3].src
Image Objects • Problem: referring to images by their object name is clumsy • Have to figure out the order in which they’re loaded to determine the image’s number • Using document.images[5] isn’t descriptive and makes the script harder to read and understand
Image Objects • Solution: id attribute of the img tag <img src=“eiffeltower.jpg”> <img src=“eiffeltower.jpg id=“tower”> • Object reference: document.tower.width document.tower.src
Image Objects • height and width properties are read-only • Therefore, you can’t change them from JavaScript • src property is read-write • So: can’t change original image dimensions but you can replace it with another one
Image Objects Assume this is the 3rd image loaded <img src=“eiffeltower.jpg” id=“tower”> … document.images[2].src=“eiffelnight.jpg” (or) document.tower.src=“eiffelnight.jpg” • However, height and width of new image will be the same as the original image
Image Objects • Ch09-Ex-04.htm
Image Rollovers • Create an img tag with the original image • Create an <a> element (link) that includes event handlers: • onmouseover replaces original image • onmouseout restores original image • When user hovers over link the image changes • When user leaves link the image changes back
Image Rollovers … <img src=“eiffeltower.jpg” id=“day_tower”> … <a href=“nightschedule.html” ¬onmouseover=“document.day_tower.src=‘eiffelnight.jpg’ ”¬onmouseout=“document.day_tower.src=‘eiffeltower.jpg’ ”> Click here for evening events</a>
Image Rollovers function nightImage() { document.day_tower.src=“eiffelnight.jpg” } function dayImage() { document.day_tower.src=“eiffeltower.jpg”} … <a href=“nightschedule.html” ¬ onmouseover=“nightImage()”¬ onmouseout=“dayImage()”> Click here for evening events</a>
Image Rollovers • Problem: All these images have to be downloaded to the users machine as they needed • Solution: pre-loaded (pre-cached) images • Pre-cached images are loaded at the same time as the other page content
Image Rollovers • Process: • Create an image object • Load an image into that object • Image object var nightimage = new image(69,120) • Load image: nightimage.src = “night_tower.jpg”
Assignment • Debugging Exercise, p. 266 • Correct errors • Post corrected document to your Web space as “Lagerstrom-Ch-9.html” • Grade based on: • Appearance • Technical correctness of code
The Web Wizard’s Guide to Web Design Chapter 7 Assembling the Pages
Backgrounds • Order of operations: • Background • Structure (tables, <div> elements, etc.) • Content • Background types: • Solid color • Textured color • Image
Backgrounds • Colors • Compatible with other elements (like logos) • Contrasts with text for readability • Consider printing problems for user • Tables • Images • Different layer • Tiling
Readable Text • 12-point (or larger) • Serif font • Contrasting headings • White space • 10-12 words per line • Lists bulletted/numbered • Don’t trust the tool!
Images • Insert as if text • Change size, alignment as appropriate • <img src=“website/images/boat.jpg” width=“200” height=“263” align=“left”>
Sound and Video • Embed • <embed src=“website/sounds/boat.aif” width=“200” height=“263” controller=“yes”> • Link • <a href=“website/sounds/yellow.aif” target=“_new”> Play a boating song! </a>
Forms • Select input options • Text boxes • Radio buttons • Check boxes • Select items • Submit • Reset • Action
Assignment • Hands-On Exercise #4, p. 161 • Your form should send e-mail to me at lliu@uncc.edu. • Post the new page to your personal Web space as “Lengel-Ch-7.html”
Image Rollovers • Ch09-Ex-05.htm
Image Rollovers • Ch09-Ex-06.htm