1

I have a presentation made with vanilla javascript. And I have a for loop that creates sliders. In this for loop I have to

for (var i = 0; i < prod_lorem.img; i++) {
    inhtml += "<div class="swiper-slide"><div class="img"><img src="assets/img/products/' + products_cat + '/' + prod_lorem.img + '/' + i + '.png" alt=""></div><div class="img"><img src="assets/img/products/' + products_cat + '/' + prod_lorem.img + '/' + i++ + '.png" alt=""></div></div>";
}

In second img class i++ and i+1 (this prints 01) didn't worked and I can't use two loops. I have to do this in one loop to not break the code. Thanks a lot.

Eren GELGEC
  • 75
  • 10

3 Answers3

1

Use ++i:

for (var i = 0; i < prod_lorem.img; i++) {
    inhtml += '<div class="swiper-slide"><div class="img"><img src="assets/img/products/' + products_cat + '/' + prod_lorem.img + '/' + i + '.png" alt=""></div><div class="img"><img src="assets/img/products/' + products_cat + '/' + prod_lorem.img + '/' + ++i + '.png" alt=""></div></div>';
}
Spectric
  • 30,714
  • 6
  • 20
  • 43
1

The ` symbol is a template literal. You're joining your strings incorrectly. You need to use ${} to do replacements.

Also, you don't want to increment i inside the loop, as it is used to control the loop.

    inhtml += `
    <div class="swiper-slide">
        <div class="img">
            <img src="assets/img/products/${products_cat}/${prod_lorem.img}/${i}.png" alt="">
        </div>
        <div class="img">
            <img src="assets/img/products/${products_cat}/${prod_lorem.img}/${i + 1}.png" alt="">
        </div>
    </div>`;
Charlie Bamford
  • 1,268
  • 5
  • 18
1

Have a look at this

const prod_lorem = { img : 5 }
const products_cat = "abc";
const html = Array.from({ length: prod_lorem.img }).map((_,i) => `
    <div class="swiper-slide">
        <div class="img">
            <img src="assets/img/products/${products_cat}/${i}/${i}.png" alt="">
        </div>
        <div class="img">
            <img src="assets/img/products/${products_cat}/${i}/${i+1}.png" alt="">

        </div>
    </div>`).join("");



console.log(html)
mplungjan
  • 169,008
  • 28
  • 173
  • 236