The slideshow we've just created is almost identical to
the one in the beginning of this tutorial, except that its not
clickable. We will now see how to extend this example to enable it to
not only be "hyperlinked", but hyperlinked with a different url,
depending on the image displayed.
A
slideshow that's not clickable is essentially the same as a fancy
animated gif. A slideshow that is, however, becomes an interactive
billboard. In this section, we will enhance the old slideshow to make it
into just that!
Don't panic- the road to
interactivity does not require us to alter the original code in anyway.
All that's needed is the addition of a <a> tag surrounding the
<img> tag, and a function that manipulates this <a> tag to
match different links to each image in the slideshow.
Step 1: Surround
the existing <img> tag with a <a> tag. Use a JavaScript url
in place of a standard url to allow programmatic access to it:
<a href="javascript:slidelink()"><img src="firstcar.gif" name="slide" width="100" height="56" /></a>
Notice the code
javascript:slidelink()
The
above is called a JavaScript url, and when clicked on, will call and
execute a JavaScript function, instead of load a document. By throwing
out the standard link and replacing it with a JavaScript url, a url
turns dynamic. Now, there really is nothing mysterious about a
JavaScript url- it simply executes a JavaScript function in place of
loading a html document. In the above case, the function that will be
executed is slidelink(), which we will actually implement in our next
step
Step 2: Declare and implement function slidelink() inside the original slideshow script.
The
"meat" of this tutorial, slidelink() is the function that will
dynamically change the url of the slideshow to match the image that's
currently being displayed in the slideshow. The below lists the original
slideshow script, with new additions highlighted in red:
<script type="text/javascript"> <!-- var step=1 //a variable that will keep track of the image currently being displayed. var whichimage=1 function slideit(){ if (!document.images) return document.images.slide.src=eval("image"+step+".src") whichimage=step if (step<3) step++ else step=1 setTimeout("slideit()",1800) } slideit() function slidelink(){ if (whichimage==1) window.location="link1.htm" else if (whichimage==2) window.location="link2.htm" else if (whichimage==3) window.location="link3.htm" } //--> </script>
We declared a new variable
called "whichimage", which will be used to keep track of the image
currently being shown (its index number). In other words, variable
"whichimage" keeps track of whether the image currently in display is
the first, second, or third image in the slideshow. How does this
variable achieve that? By retrieving the number stored inside variable
"step" just before it gets incremented during each image rotation. Once
we are able to keep track of this information, we can write code that
loads a different url, depending on the image displayed. This is
realized through function slidelink().
Step 3: Throw everything together.
All
that's left now is to toss everything into one bowl, and we have an
interactive billboard that takes us to a different url depending on the
image shown:
<html> <head> <script type="text/javascript"> <!-- //preload images var image1=new Image() image1.src="firstcar.gif" var image2=new Image() image2.src="secondcar" var image3=new Image() image3.src="thirdcar.gif" //--> </script> </head> <body> <a href="javascript:slidelink()"> <img src="firstcar.gif" name="slide" border="0" width="100" height="56" /></a> <script type="text/javascript"> <!-- var step=1 var whichimage=1 function slideit(){ if (!document.images) return document.images.slide.src=eval("image"+step+".src") whichimage=step if (step<3) step++ else step=1 setTimeout("slideit()",1800) } slideit() function slidelink(){ if (whichimage==1) window.location="link1.htm" else if (whichimage==2) window.location="link2.htm" else if (whichimage==3) window.location="link3.htm" } //--> </script> </body> </html>
In this tutorial, we've created a slideshow that cycles through three images; it could easily be modified to accommodate any number of images.
0 comments:
Post a Comment