首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for循环通过JSON循环循环

使用for循环通过JSON循环循环
EN

Stack Overflow用户
提问于 2016-04-04 13:02:44
回答 2查看 78关注 0票数 3

我试图通过跟随JSON来添加图像-

代码语言:javascript
复制
json = [{
        "id": 6,
        "name": "rac2 ",
        "shop_id": 4,
        "categories_id": 5,
        "category": "category-5",
        "min_price": 555,
        "max_price": 55656,
        "image": "http://www.shopforshops.com/www/61/files/clothing-racks1.jpg",
    },
    {
        "id": 64,
        "name": "rac32 ",
        "shop_id": 4,
        "categories_id": 5,
        "category": "category-5",
        "min_price": 555,
        "max_price": 55656,
        "image": "http://ohjoy.blogs.com/.a/6a00d8341c6a0853ef019affb2bbfe970c-800wi",
    },
    {
        "id": 643,
        "name": "rac32 ",
        "shop_id": 44,
        "categories_id": 5,
        "category": "category-5",
        "min_price": 555,
        "max_price": 55656,
        "image": "http://cache2.asset-cache.net/gc/129305805-racks-of-clothes-in-a-menswear-store-gettyimages.jpg?v=1&c=IWSAsset&k=2&d=mcPYJ5XyANr2jzh2gHmNDG%2FS5MzSDogxQ%2BKrWHyAnTHGKr%2FOnkBx3JkVNAMcV9GZ",
    },
]

我把它循环成这样-

代码语言:javascript
复制
 $('.rackLayer').css({"background-image": "url('" + json[0].image + "')"});
            for (z = 1; z < json.length; z++)
            {
                    $('.rackLayer').after("<div class='inside-rack'> </div>");
                    $('.inside-rack').css({"background-image": "url('" + json[z].image + "')"});
            }

而html是-

代码语言:javascript
复制
<div class="container-fluid">
            <div class="row">
                <div id="scroll-section">
                    <div class="rackLayer">

                    </div>
                </div>
            </div>
        </div>

我想要的是,首先添加带有O索引的图像,然后按照索引1和2的顺序添加剩余的图像。

有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-04 13:12:34

更新这一条:

代码语言:javascript
复制
for (z = 1; z < json.length; z++)
{
   var div = $("<div >", { //<---creates div element
      class  :'inside-rack', 
      'style':'background-image:url("'+ json[z].image +'")' // <--style the bgimg
   });
   $('.rackLayer').after(div); //<---now push in the DOM.
}

问题似乎在我看来,选择器,$('.inside-rack'),这将改变所有的div。循环结束时,每个对象都从json获取最后一个对象的图像属性。

因此,解决方案是在那里创建一个新的元素样式,然后将其推入DOM中。

票数 0
EN

Stack Overflow用户

发布于 2016-04-04 13:12:02

问题是$('.inside-rack').css({"background-image": "url('" + json[z].image + "')"});将背景图像应用于所有先前添加的元素,而只需要针对新创建的元素。

代码语言:javascript
复制
json = [{
  "id": 6,
  "name": "rac2 ",
  "shop_id": 4,
  "categories_id": 5,
  "category": "category-5",
  "min_price": 555,
  "max_price": 55656,
  "image": "http://www.shopforshops.com/www/61/files/clothing-racks1.jpg",
}, {
  "id": 64,
  "name": "rac32 ",
  "shop_id": 4,
  "categories_id": 5,
  "category": "category-5",
  "min_price": 555,
  "max_price": 55656,
  "image": "http://ohjoy.blogs.com/.a/6a00d8341c6a0853ef019affb2bbfe970c-800wi",
}, {
  "id": 643,
  "name": "rac32 ",
  "shop_id": 44,
  "categories_id": 5,
  "category": "category-5",
  "min_price": 555,
  "max_price": 55656,
  "image": "http://cache2.asset-cache.net/gc/129305805-racks-of-clothes-in-a-menswear-store-gettyimages.jpg?v=1&c=IWSAsset&k=2&d=mcPYJ5XyANr2jzh2gHmNDG%2FS5MzSDogxQ%2BKrWHyAnTHGKr%2FOnkBx3JkVNAMcV9GZ",
}]


var $layer = $('.rackLayer').css({
  "background-image": "url('" + json[0].image + "')"
});

for (z = 1; z < json.length; z++) {
  $("<div class='inside-rack'></div>").css({
    "background-image": "url('" + json[z].image + "')"
  }).insertAfter($layer);
  $('.rackLayer').after();
}
代码语言:javascript
复制
.rackLayer,
.inside-rack {
  height: 150px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="rackLayer"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36403471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档