创建带有文本和跨度标签的动态li标签

时间:2019-01-03 17:44:29

标签: javascript jquery html json ajax

我有一个JSON数组,如下所示:

var teamDetails=[ 
 { "pType" : "Search Engines", "count" : 5},
 { "pType" : "Content Server", "count" : 1},
 { "pType" : "Search Engines", "count" : 1},
 { "pType" : "Business", "count" : 1,},
 { "pType" : "Internet Services", "count" : 1},
];

我想创建包含JSON数据的动态ul&li标签

我希望将数据放置如下:

<ul class="list-unstyled">
<li>
    ***Here the json ptype value***
    <span class="pull-right">
        <strong>
            <h5>***here json count value***</h5>
        </strong>
    </span>
</li>
</ul>

如何动态获取每个数据的输出..

我用这段代码尝试了一下,但不知道如何添加文本li和span标签?

var clist=$('ul.list-unstyled')

dataProjectCount.forEach(function(a){
  a.count=a.count+" Projects";
  console.log(a.count);

  var li=$('<li/>').appendTo(clist);
  var aa=$('<span/>').addClass('pull-right').appendTo(clist);
});

2 个答案:

答案 0 :(得分:2)

创建映射您的输入teamDetails数组项的li元素,然后将它们附加到ul容器中

const teamDetails=[ 
 { "pType" : "Search Engines", "count" : 5},
 { "pType" : "Content Server", "count" : 1},
 { "pType" : "Search Engines", "count" : 1},
 { "pType" : "Business", "count" : 1,},
 { "pType" : "Internet Services", "count" : 1},
];

const liElements = teamDetails.map(el => $(`<li>${el.pType}<span class="pull-right><strong><h5>${el.count}</h5></strong></span></li>`));
$('.list-unstyled').append(liElements);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="list-unstyled">
</ul>

答案 1 :(得分:0)

从对象数组中提取

  • 首先使用<ul class="list-unstyled"></ul>.html()添加到DOM。

  • 在外部数组上使用.map()

  • 在数组中的每个对象上使用Object.values()

  • 在每个对象的值上使用.map()

  • 在交替迭代中使用了HTML字符串的一部分

  • 将值插值到每个片段中之后,结果是一个字符串数组

  • 使用.join()

  • 将字符串数组转换为单个字符串
  • .append()到空白列表的字符串


演示

var teamDetails = [{pType:"Search Engines",count:5},{pType: "Content Server",count: 1},{pType:"Business",count: 1},{pType: "Internet Services",count: 1}];

$('body').html(`<ul class="list-unstyled"></ul>`);

var result = teamDetails.map(function(item) {
  var obj = Object.values(item).map(function(val, idx) {
    if (idx % 2 === 0 || idx === 0) {
      var str = `<li><b class='tD A'>${val}  </b>`;
    } else {
      var str = `<b class='tD B'>${val}</b></li>`;
    }
    return str;
  });
  return obj;
});

var string = result.join(' ').replace(/,/g, '');

$('.list-unstyled').append(string);
.tD {
  display: inline-block;
  font: 16px/1.2 Verdana;
}

.A {
  width: 15ch
}

.B {
  font: 700 20px/1 Consolas;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>