I’m trying to create my own slideshow. The following code fades from one image to another. I’d like to cycle from img1.jpg to img4.jpg but i’m not sure how to pause after each change.
i++;
temp = "img"+i+".jpg";
$("#img").fadeOut(function() {
$(this).load(function() { $(this).fadeIn(); });
$(this).attr("src", temp);
});
UPDATE: I’ve changed the code to the following. On John Boker’s advice i’ve renamed the images to img0, img1, img2, img3. It goes to the first, second, third image the just stops. Any ideas?
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
var temp="";
function slideshow(i)
{
temp = "img"+i+".jpg";
$("#img").fadeOut(function() {
$(this).load(function() {
$(this).fadeIn();
// set a timeout of 5 seconds to show the next image;
setTimeout(function(){ slideshow((i+1)%4); }, 5000);
});
$(this).attr("src", temp);
});
}
slideshow(0);
});
</script>
</head>
<body>
<img src="img1.jpg" id="img"/>
</body>
</html>
You can do it like this, using setInterval:
I’ve simplified a few things that might have been causing some of the other problems you’re seing, removing the (seemingly superfluous) call to
loadinside yourfadeOutcallback and eliminating the unnecessarytempvariable.(Finally, if you aren’t just doing this to learn, consider using one of the many excellent slideshow plugins out there, like Cycle.)