Создать динамический тег li с текстом вместе с тегом span - PullRequest
0 голосов
/ 03 января 2019

У меня есть массив 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},
];

Я хочу создать динамические теги ul & li с данными JSON в нем

Я хочу данныебыть размещенным так:

<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 голосов
/ 04 января 2019

Извлечение из массива объектов

  • Сначала добавьте <ul class="list-unstyled"></ul> в DOM, используя .html().

  • Используйте .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>
0 голосов
/ 03 января 2019

Создайте элементы li, отображающие ваши входные элементы массива teamDetails, и добавьте их в контейнер 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...