0

I've searched around and found no pure js solution to my issue that I can apply to my code. It's a script that prints an array of images, but for now it only prints 1 array. Pertinent code in html:

<div id="imgViewer"></div>
<script>
var imgViewerImages = ['img/imgViewer/1.png','img/imgViewer/2.png','img/imgViewer/3.png','img/imgViewer/4.png','img/imgViewer/5.png','img/imgViewer/6.png'];
</script>
<script src="services/imgViewer.js"></script>

And in JS:

function imgViewerPrinter(){
    var imgViewerTarget = document.getElementById('imgViewer');
    imgViewerImages.toString();

    for (var i=0;i<imgViewerImages.length;i++){
        imgViewerTarget.innerHTML = '<img src="' + imgViewerImages[i] + '">';
    }
}

window.onload = imgViewerPrinter();

I'm still a noob is JS so I ask for your pacience.

Thanks in advance

3
  • Is the array declaration and usage are in same file? Commented Oct 25, 2013 at 11:25
  • The array is in the HTML, then the JS script is called from a external file. Commented Oct 25, 2013 at 11:26
  • imgViewerTarget.innerHTML = '<img should be imgViewerTarget.innerHTML += '<img Commented Oct 25, 2013 at 11:28

4 Answers 4

1

try :

imgViewerTarget.innerHTML += "<img src="' + imgViewerImages[i] + '">";
Sign up to request clarification or add additional context in comments.

1 Comment

That worked. Thanks allot! Though I'll implement Luke14's suggestion.
0

If you want to print out an array of images shouldnt you have your HTML code in the loop making i the image number for example;

 for (var i=0;i<imgViewerImages.length;i++){
var imgViewerImages = ['img/imgViewer/' + [i] + '.png'];
  }

2 Comments

Almost... in this method, it literally prints [i].png. You need to use '.../'+i+'.png'
I can see how your code is more efficent. I can define a var with the location and the other with the array. But this is meant to be use by less tech-prone people, in which naming everything might be more intuitive.
0

Try this optimized soln.

 var imgViewerImages =['img/imgViewer/1.png','img/imgViewer/2.png','img/imgViewer/3.png','img/imgViewer/4.png','img/imgViewer/5.png','img/imgViewer/6.png'];

    function imgViewerPrinter(){

        var imgList=[];
        for (var i=0;i<imgViewerImages.length;i++){
            imgList.push('<img src="' + imgViewerImages[i] + '" />');
        }
         var imgViewerTarget = document.getElementById('imgViewer');
         imgViewerTarget.innerHTML = imgList.join('');
    }

    window.onload = imgViewerPrinter();

1 Comment

Avoid concatenation of string because it takes more memory.
0

try something like this,Because your code rewrite innerHTML again and again, so you get last iterated value.

Instead of manipulating DOM in every loop,Below code will manipulate your DOM one time only.

function imgViewerPrinter(){
    var imgViewerTarget = document.getElementById('imgViewer');

    var imgViewerImages_length = imgViewerImages.length;
    var image = '';
    for (var i=0;i<imgViewerImages_length;i++){
        image += '<img src="' + imgViewerImages[i] + '">';
    }
    imgViewerTarget.innerHTML = image;
}

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.