【问题标题】:JSON result value as key in JavaScript/jQueryJSON 结果值作为 JavaScript/jQuery 中的键
【发布时间】:2020-11-21 20:43:01
【问题描述】:

我有一个 JSON 结果,我想在其中创建一个手风琴菜单,我想要一个类似结果的值作为这些类似行的标题,请在下面查看我做了什么。

假设我有一个下面的 JSON 对象

var items = [
    {label: "TY2021H", name: "10-Yr T-Notes", value: "TY2021H"},
    {label: "TY2020Z-TY2021H", name: "10-Yr T-Notes Spread", value: "TY2020Z-TY2021H"},
    {label: "TY2021H-TY2021M", name: "10-Yr T-Notes Spread", value: "TY2021H-TY2021M"},
    {label: "TY2020Z-2*TY2021H+TY2021M", name: "10-Yr T-Notes Butterfly", value: "TY2020Z-2*TY2021H+TY2021M"}]

我的JS代码的相关部分如下:

 var myUL = $("#accordion");
 myUL.empty();
 var currentName = "";    
 for (var i = 0; i <= items.length - 1; i++) {
      var label = items[i].label;
      if (items[i].name != currentName) {
            currentName = items[i].name;
                          list +=
                            '<a href="#demo' +
                            i +
                            '" class="list-group-item list-group-item-info" data-toggle="collapse" data-parent="#accordion">' +
                            currentName +
                            ' <span id="opnClsSign" class="glyphicon glyphicon-menu-down"></span></a>';
                          list += '<div class="collapse in" id="demo' + i + '">';
                        }
        
                        list += '<a href="#" class="list-group-item">' + label + "</a>";
                        
                      }
                      list += "</div>";
                      myUL.append(list);

我的 HTML div 的一部分

<div class="list-group panel" id="accordion"></div>

我现在得到的结果

我的期望

【问题讨论】:

  • 为什么只显示部分JS?你甚至没有关闭循环!
  • @Marc 我已经在这支笔中添加了完成这个问题的所有内容:codepen.io/rafihaidari/pen/ExyBGVK 现在的问题是两行类似的结果在手风琴下。

标签: javascript jquery arrays json bootstrap-accordion


【解决方案1】:

代码缩进可以在这种情况下提供帮助。您的最后两行应该在循环内,以使代码有意义。在每次迭代中,您必须关闭div并将代码添加到myUL

var items = [
    {label: "TY2021H", name: "10-Yr T-Notes", value: "TY2021H"},
    {label: "TY2020Z-TY2021H", name: "10-Yr T-Notes Spread", value: "TY2020Z-TY2021H"},
    {label: "TY2021H-TY2021M", name: "10-Yr T-Notes Spread", value: "TY2021H-TY2021M"},
    {label: "TY2020Z-2*TY2021H+TY2021M", name: "10-Yr T-Notes Butterfly", value: "TY2020Z-2*TY2021H+TY2021M"}]


var myUL = $("#accordion");
myUL.empty();
var currentName = "";    
for (var i = 0; i <= items.length - 1; i++) {
  var label = items[i].label;
  var list = '';
  if (items[i].name != currentName) {
    currentName = items[i].name;
    list +=
        '<a href="#demo' +
        i +
        '" class="list-group-item list-group-item-info" data-toggle="collapse" data-parent="#accordion">' +
        currentName +
        ' <span id="opnClsSign" class="glyphicon glyphicon-menu-down"></span></a>';
    list += '<div class="collapse in" id="demo' + i + '">';
  }

  list += '<a href="#" class="list-group-item">' + label + "</a>";
  list += "</div>";
  myUL.append(list);
}
  
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="list-group panel" id="accordion"></div>

另外,您需要定义list

【讨论】:

【解决方案2】:

我自己解决了这个问题,并将最终的源代码添加到这支笔中:

[https://codepen.io/rafihaidari/pen/ExyBGVK]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2013-12-17
    相关资源
    最近更新 更多