【问题标题】:JSON array into HTML tableJSON 数组到 HTML 表中
【发布时间】:2019-06-29 05:15:58
【问题描述】:

寻找一种解决方案来实现一个 HTML 表格,该表格从 JSON 文件中获取“标题”并将其放在 2 列表格的第一列中,第二列有“描述”。

描述必须像项目符号一样分层,因为它是 JSON 文件中数组中的一个数组。目前它的工作方式是它是第二列中的一大块数据,看起来像一个巨大的句子。我已经尝试将每个要点放入其单独的密钥对中,但这不可行,因为它很耗时。是否有用于迭代数组中数组的 if 语句的选项?打开其他脚本替代方案。

var data = [
 {
  "title": "title1",
  "description":["description1","description2"]
 },
 {
  "title": "title2",
  "description":["description3","description4"]
 }
]

$(document).ready(function(){
    var list = '';
    $.each(data, function(key, value){
      list += '<tr>';
      list += '<td>'+value.title+'</td>';
      list += '<td>'+value.description+'</td>'
      list += '</tr>';
    });
    $('#table1').append(list);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table" id="table1">
  <tr>
    <th>Title</th>
    <th>Description</th>
  </tr>
</table>

【问题讨论】:

    标签: html arrays json


    【解决方案1】:

    您当前的方法很好。您只需在$.each 中添加$.each:

    $(document).ready(function () {
        $.getJSON("data.json", function (data) {
            var list = '';
            $.each(data, function (key, value) {
                list += '<tr><td>' +
                    value.title +
                    '</td><td><ul>';
                $.each(value.description, function (key, value) {
                    list += "<li>" + value + "</li>";
                })
                list += '</ul></td></tr>';
            });
            $('#table1').append(list);
        });
    });
    

    var data = [{
        "title": "title1",
        "description": ["description1", "description2"]
      },
      {
        "title": "title2",
        "description": ["description3", "description4"]
      }
    ]
    
    $(document).ready(function() {
      var list = '';
      $.each(data, function(key, value) {
        list += '<tr><td>' +
          value.title +
          '</td><td><ul>';
        $.each(value.description, function(key, value) {
          list += "<li>" + value + "</li>";
        })
        list += '</ul></td></tr>';
      });
      $('#table1').append(list);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <table class="table" id="table1">
      <tr>
        <th>Title</th>
        <th>Description</th>
      </tr>
    </table>

    编辑:改进版: JSFiddle

    【讨论】:

    • 这很好用,谢谢。如何在主要要点中添加次要要点?所以我可以有一个名为 test1 的项目符号,然后在 test1 中有 2 个项目符号名为 test2 和 test3。
    • 为了改写我的措辞,我希望创建一个多级项目符号系统,但只增加 1 个级别。我一直在尝试多种方法,但似乎无法弄清楚如何格式化 JSON 或脚本。
    • 你只需要arrays在数组里面,然后使用if/else来检测项目符号点是单个字符串还是数组,如果为真, 使用另一个$.each 来放置次要要点
    • 你有什么网站可以帮助我在 JSON 中嵌套这么多数组吗?
    • W3Schools 是一个很好的开始网站(例如:Lists、arrays、JSON 等),但能够结合这些不同的技能是最重要的。这大部分是我自己的经验。无论如何,我已经修复了上述答案的错误,并用次要要点创建了一个小提琴。 JSfiddle example
    猜你喜欢
    • 2013-08-02
    • 2014-06-16
    • 2021-09-06
    • 2017-09-17
    • 2020-05-27
    • 2021-04-14
    • 2013-11-14
    • 2014-09-01
    • 2019-08-27
    相关资源
    最近更新 更多