【问题标题】:Trying to loop through an JSON object and output it using HTML尝试遍历 JSON 对象并使用 HTML 输出它
【发布时间】:2017-10-10 02:36:01
【问题描述】:

我正在尝试遍历this JSON 数据并将数据输出到手风琴,如下所示: http://alexthorpe.com/wp-content/uploads/2012/01/accordion_with_css.jpg 但它不起作用。

这是我目前所拥有的:
HTML:

<div class="accordion">
            <div class="slide">
                <h3></h3>
                <div class="accordion-info">
                </div>
            </div>
</div>

JS:

$(document).ready(function() {
    $('div.accordion-info').hide();
    $('.slide > h3').click(function() {
        $(this).next().slideToggle('fast');
        $(this).toggleClass('active');
    });
});

$(document).ready(function() {
  $.getJSON('http://design.propcom.co.uk/buildtest/accordion-data.json', function(data) {
        $.each(data, function(index) {
            console.log(data);
        });
    });

});

这是codepen

【问题讨论】:

  • 那么你的问题是什么?
  • @Optional 我正在尝试遍历这个JSON 对象
  • 您需要再次遍历“块”,这是一个数组,作为响应的一部分。因为每个块都有内容和标题属性,您可以将其附加到您的 div 中。简单:)
  • 检查这个工作 jsfiddle:jsfiddle.net/ksrawat/brzvweh5

标签: javascript jquery html json


【解决方案1】:

HTML 代码

这里我将使用模板格式添加或删除子元素会更容易

<!-- Display Accordion -->
<div>
   <h1>Jquery Accordion</h1>
   <div class="accordion"></div>
</div>
<!-- Template for each slide item -->
<div rel="template">
   <div class="block">
      <h3 class="heading"></h3>
      <div class="content"></div>
   </div>
</div>

脚本

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
$(function() {
    $.getJSON('http://design.propcom.co.uk/buildtest/accordion-data.json', function(data) {
        // To empty the existing item
        // $('.accordion').empty();

        // Iterate block
        $.each(data.blocks, function(k, v) {
            // Make use of jquery clone
            var new_block = $('[rel=template]').find('.block').clone();
            new_block.find(".heading").html(v['heading']);
            new_block.find(".content").html(v['content']);

            // Append the each item
            $('.accordion').append(new_block)
        });
    });

});

【讨论】:

【解决方案2】:

因为我想避免从不同的服务器调用数据,所以将数据复制到这里,这就是它的循环方式

var jsonData = 
{
	"blocks": [
		{
			"heading": "Section 1",
			"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis! Rem maiores reprehenderit animi aliquam inventore vel adipisci delectus itaque! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis!"
		},
		{
			"heading": "Section 2",
			"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis! Rem maiores reprehenderit animi aliquam inventore vel adipisci delectus itaque! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore sed aliquam vitae fugit odit voluptate eligendi, blanditiis quasi nobis reiciendis! Rem maiores reprehenderit animi aliquam inventore vel adipisci delectus itaque!"
		},
		{
			"heading": "Section 3",
			"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit."
		}
	]
};
var json = jsonData.blocks;
  for (var key in json) {
       if (json.hasOwnProperty(key)) {
          console.log(json[key].heading);
          console.log(json[key].content);
       }
    }
  
   

【讨论】:

  • 谢谢 有没有办法使用url而不是复制粘贴json数据?
  • 您可以像现在一样使用 url,但不能在 jsfiddle 或您的 codepen 中使用,因为您正在使用的 url 的 cors/不同协议。如果 url 是从您运行 html 的同一服务器返回的,那么您可以使用它
  • 否。您的代码正在正确获取 json 数据。请参阅此处启用 cors 的工作示例 url jsfiddle.net/esmufhzb
猜你喜欢
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2021-12-11
  • 1970-01-01
  • 2021-09-16
  • 2021-11-20
  • 2015-01-11
相关资源
最近更新 更多