Как преобразовать php код в функцию в js и передать эту функцию в content += 'cюда'

Не опытен, учусь еще, строго не судите. Искал в инете чет не нашел, видимо не правильно вопрос сформировал.

Есть php код который в html вывожу.

<td style="text-align:center" align="center" valign="middle">
<? if ($katts->status == 0): ?>
<span title="Включить" class="icon icon-eye-closekatts status-checker" data-id="<?php echo $katts->id ?>"></span>
<? else: ?>
<span title="Отключить" class="icon icon-eye-openkatts status-checker" data-id="<?php echo $katts->id ?>"></span>
<? endif ?>
</td>

Как его переделать для js функции.

closeOpenKatts: function(d) {

},

Далее, я хочу эту функцию задействовать в этом коде.

buildKattss: function(d) {
let content = '';
$.each(d, function(index, value) {
content += '<tr data-id="' + value.id + '" id="' + value.id + '" class"' + ((value.status == 0) ? 'status-offcatts' : '') + '">';
content += '<td style="text-align:center" align="center" valign="middle">';
content += 'сюда функцию closeOpenKatts';
content += '</td>';
content += '</tr>';
});

$('table#kattss-list tbody').html(content);
},

На странице контент подгружаю через ajax, там table, вот хочу добавить одну функцию и знаю что на прямую в content += ''; вставить php нельзя и для этого надо делать функцию в js, чтобы передать php в функцию и далее эту функцию в content += ''; мне сказали так надо делать.


Ответы (3 шт):

Автор решения: Aleksey Vaganov

Если функция объявляется в html коде, а не подключается в js файле, то делайте так:

closeOpenKatts: function(d) {
   return "<?= "something"; ?>"
},
→ Ссылка
Автор решения: teran

сделайте метод render, который будет по входным данным генерить строку.

function render(value){
    let sCls  = value.status ? "status-offcats" : '',
        title = value.status ? "выкл" : "вкл",
        iCls  = value.status ? "openkatts" : "closekatts";
     
    return `<tr data-id="${value.id}" id="{value.id}" class="${sCls}">
              <td class="middle-class">
                 <span title="${title}" class="icon icon-eye-${iCls}
                       status-checker" data-id="${value.id}"></span>
              </td>
            </tr>`;         
}

и метод, который будет вызывать это к набору полученных данных

let content = d.map(v => render(v)).join('');
$("#target").html(content);

Если целиком на стороне сервера верстку генерить, то

$("#target tbody").load("/path/to/render.php");
→ Ссылка
Автор решения: ws17

Вот и решение подкатило. Помог решить задачу: teran

buildKattss: function(d) {
  function render(value) {
    let sCls = value.status == 0 ? "status-offcatts" : "",
      title = value.status == 0 ? "Отключить" : "Включить",
      iCls = value.status == 0 ? "closecatts" : "opencatts";

    return `<tr data-id="${value.id}" id="${value.id}" class="${sCls}">
    <td style="text-align:center" align="center" valign="middle">
         <span title="${title}" class="icon icon-eye-${iCls} status-checker" data-id="${value.id}"></span>
      </td>
      </tr>`;
  }
  let content = Object.values(d).map(v => render(v)).join('');
  $('table#kattss-list tbody').html(content);
},
→ Ссылка