1

This is probably fairly simple task for someone more experienced with javascript. I'd like to have an array of images and then loop through them to display each one with a certain interval of time between each one.

  1. Store images in an array: var anArray = [image1, image2, image] (Can I put images into an array by simply put their src in in an array like this? When I tried it treated each like a string.)
  2. Create a loop to go through each image in the array and fadeIn each image: for (var i = 0; i <= array.length; i++) But I don't want want it to fade in all the images at once, I want one at a time.
  3. Set an interval of time: setInterval(functioin() {}, 1000); So that each image is displayed 1 second or however many seconds after each other.

I know I could use a plugin, but I'm trying to learn javascript so I want to avoid taking shortcuts(except of course the shortcut of asking for help on here!)

Thanks

1
  • 2
    Show your current code? Commented Dec 16, 2014 at 7:40

2 Answers 2

1
var img;
for(length)
{
  img[i]=new Image();
  img[i].src="src";
} 

//for storing image as a array

var count=0;
var timerid = setInterval(function()
{
   //fade in image
   count++;
   if(count > length)clearInterval(timerId); 
}, 1000);

Better option is add all the image to DOM on image.onload with a display:none tag and then use a loop to fade in the image one by one,

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks for the quick response and breaking it down
If I've already added images in html set display to none how would the loop look to fade in the images? for(var i = 0; i<=3; i++) { //how would I fade in the images here as the iterator counts up?
0

Another option is to use a closure for the counter. Counters are most elegantly implemented as closures.

// Wrapping the code in a self envoking function prevents polluting the global namespace.
(function() {

    // The images array.
    var images = ['image1.jpg', 'image2.jpg', 'image3.jpg'];

    // The counter function using a closure.
    var add = (function() {
        // Setting the counter to the last image so it will start with the first image in the array.
        var counter = images.length - 1;
        return function() {
            // When the last image is shown reset the counter else increment the counter.
            if(counter === images.length - 1) {
                counter = 0;
            } else {
                counter+=1;
            }
            return counter;
        }
    })();

    // The function for changing the images.
    setInterval(
        function() {
            console.log(images[add()]);
        }
    , 1000);

})();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.