PDA

View Full Version : Adding text to Slideshow script for images


schwarznavy
04-02-2008, 06:52 PM
Greetings,

I'm not a very advanced programmer at all.

I found a piece of code that helps me out a lot at http://www.codelifter.com/main/javascript/slideshow2.html. It allows an image to crossfade into another, into another, etc.

I'd like to be able to crossfade an image, with a text caption underneath it, to crossfade into a different image with different text, into another, etc.

I think doing this may have something to do with putting the image and caption into a <div>, and then changing the code to swap the first <div> into the next, into the next.

The code identifies the images as 1.jpg, 2.jpg, 3.jpg, etc. It would be awesome if the captions could come from 1.txt, 2.txt, 3.txt, etc.

If Javascript can't call up .txt files, then the captions could be put inside the current web page into a table that is set to be hidden (display: none).

Can anyone help me do this?

The reason I want to use Javascript is because I do not wish to use anything that will make visitors have to have additional software (like Java or Flash). Additionally, it is not a problem if they have Javascrpt disabled, because then they'll just see the first image with the first caption, which is fine. I can't use anything like PHP or PERL because I have very little control over the server.

Thank you very much.
Matthew

Here is the original code:

==========================================================
Script: JavaScript Cross-Browser SlideShow Script
With Cross-Fade Effect between Images
Adjustable Timing and Unlimited Images
Function: Displays images continuously in a slideshow
presentation format, with a fade effect on
image transitions.
Browsers: All common browsers: NS3-6, IE 4-6
Fade effect only in IE; others degrade gracefully
Author: etLux
==========================================================

Step 1.
Put the following script in the head of your page:

<script>
// (C) 2000 www.CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this header
// NS4-6,IE4-6
// Fade effect only in IE; degrades gracefully

// =======================================
// set the following variables
// =======================================

// Set slideShowSpeed (milliseconds)
var slideShowSpeed = 5000

// Duration of crossfade (seconds)
var crossFadeDuration = 3

// Specify the image files
var Pic = new Array() // don't touch this
// to add more images, just continue
// the pattern, adding to the array below

Pic[0] = '1.jpg'
Pic[1] = '2.jpg'
Pic[2] = '3.jpg'
Pic[3] = '4.jpg'
Pic[4] = '5.jpg'

// =======================================
// do not edit anything below this line
// =======================================

var t
var j = 0
var p = Pic.length

var preLoad = new Array()
for (i = 0; i < p; i++){
preLoad[i] = new Image()
preLoad[i].src = Pic[i]
}

function runSlideShow(){
if (document.all){
document.images.SlideShow.style.filter="blendTrans(duration=2)"
document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
document.images.SlideShow.filters.blendTrans.Apply()
}
document.images.SlideShow.src = preLoad[j].src
if (document.all){
document.images.SlideShow.filters.blendTrans.Play()
}
j = j + 1
if (j > (p-1)) j=0
t = setTimeout('runSlideShow()', slideShowSpeed)
}
</script>

==========================================================

Step 2.
Put this onload event call in your body tag:

<body onload="runSlideShow()">

==========================================================

Step 3.
Put this in the body of your page where you want the
slide show to appear.

Set widths and heights same as images
Set image file same as first image in array Pic[] (above)

<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td id="VU" height=150 width=150>
<img src="1.jpg" name='SlideShow' width=150 height=150></td>
</tr>
</table>

==========================================================

Mr J
04-02-2008, 11:16 PM
Take a look at this one, see if it is any good for you

www.huntingground.freeserve.co.uk/imagery/imggal2.htm

schwarznavy
04-02-2008, 11:52 PM
Mr. J,

That is real nice, as are the abundant other examples on your site.

The only thing that would make everything even better is if the slideshow could read the captions from a .txt file. The reason this is so important is because since I'm in the Navy, I will not always be the one editing our web site. I share that duty with several coworkers....not to mention when my tour rotates and someone comes to replace me. That being said, most people that will be doing this are not very familiar with web design, and certainly are not comfortable going into code.

Matt

Mr J
04-03-2008, 05:14 PM
Javascript cannot read text files as such which means you would have to pop into the PHP forum and ask for a possible solution but ..... you could create an external .js file for the array.

The external.js file would look something like this

arr[

["image1.jpg","Text for image one"],
["image2.jpg","Text for image Two"],
["image3.jpg","Text for image Three"],
["image4.jpg","Text for image Four"],
["image5.jpg","Text for image Five"] // no comma at the end of the last index

]

All that is entered is the image and the relevant text, easy to edit by anyone, hopefully :)

If you are interested in this method I could amend my original script and knock up an example.

schwarznavy
04-03-2008, 05:43 PM
Mr. J,

That sounds like a great idea. I think I could implement something like that and then train my coworkers to carefully manage something like that.

I'd really appreciate an example!!!

What is a .js file, by the way?

Matt

Mr J
04-04-2008, 05:22 PM
An .js file is simply a file that contains scripts or lines of code to be used externally with an html file.

As I do not know the layout of your page there's a couple of examples which you can see at the following links.

www.huntingground.freeserve.co.uk/imagery/sldshow3.htm

www.huntingground.freeserve.co.uk/imagery/sldshow3b.htm

See which one you prefer and I will attach the relevant code