Как в цикл передать переменную c номером ul, чтобы из него вывелось одно значение в нужный ul

Рейтинг: 0Ответов: 1Опубликовано: 03.08.2023

Есть некий цикл, в котором крутится три значения из output

const { output } = JSON.parse(response);
$('.hs-categ').each(function (i) {
        var pagcat = $(this).find('.pagcat');
        output[i].forEach(function (page) //перебор и вывод
        {
            const pag = getItemPAG(page);
            pagcat.empty().append(pag); //очищаем старую и добавляем новую выборку
        });
});

function getItemPAG(page)
{
    const pagHTML = `
        <div id="pagelink">${page}</div>`;

    return pagHTML;
}

Затем эти три значения отравляются в ul

<div class="hs-categ"><?= $cat[0] ?>
   <ul class="pagcat">
 
   </ul>
</div>
<div class="hs-categ"><?= $cat[1] ?>
   <ul class="pagcat">
 
   </ul>
</div>
<div class="hs-categ"><?= $cat[2] ?>
   <ul class="pagcat">
 
   </ul>
</div>

Проблема в том, что когда я хочу с помощью ajax прогнать по этому же циклу одно значение и отправить например в третий по счету блок, то это значение попадает в первый блок. Я пытался доработать цикл и с помощью переменной var arr = 3; (число будет меняться мной в зависимости от нумерации блока ul) дать понять циклу в какой блок вывести единственное значение output, которое там крутится.

$('.hs-categ').each(function (i) {
        var arr = 3;
        var pagcat = $(this).find('.pagcat');
        output[i].forEach(arr, function (page, e) //перебор и вывод
        {
            const pag = getItemPAG(page);
            pagcat.empty().eq(e).append(pag); //очищаем старую и добавляем новую выборку
        });
});

Как можно вывести единственное значение из цикла в блок так, чтобы значение попадало в ul, нумерацию которого я укажу в var arr = 3;?

Ответы

▲ 1Принят

const output = [[1],[2],[3]];

function writePages(pageIndex) {
  $('.hs-categ .pagcat').each(function (i) {
    if (pageIndex && pageIndex !== i+1) return;
    output[i].forEach(page => {
      $(this).empty().append(`<div id="pagelink">${page}</div>`);
      // id не должен дублироваться ---------^
    });
  });
}


writePages();
// записать конкретный блок:
// writePages(2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hs-categ">
   <ul class="pagcat">
   </ul>
</div>
<div class="hs-categ">
   <ul class="pagcat">
   </ul>
</div>
<div class="hs-categ">
   <ul class="pagcat">
   </ul>
</div>