Преобразовать строку таблицы HTML в объект без тегов HTML - PullRequest
0 голосов
/ 29 октября 2019

У меня есть таблица, заполненная вызовом Webapi. Я позволяю человеку вносить изменения в раздел с помощью селектора. Что мне нужно сделать, это получить название раздела, «уровень добавления», «уровень редактирования», «уровень удаления» и «уровень чтения» для каждой строки. Что я планировал сделать, так это SerializeArray (), чтобы получить пары значений (имя / значение), которые действительно работают, за исключением того, что я должен добавить различие к именам (добавить, запросить, изменить и т. Д.), Чтобы определить, куда и кудаВ настоящее время у меня есть

HTML:

<form id="InventoryFrm" >
  <table id="InventoryTable">
    <thead>
      <tr id="Columns"> 
        <th> <i class="fa fa-chevron-down"></i> Inventory</th>
        <th>Add Level</th>
        <th>Edit Level</th>
        <th>Delete Level</th>
        <th>Inquire Level</th>
        <th>Last Updated</th>
        <th>Updated By</th>
      </tr>
    </thead>
    <tbody class="InventoryTableBody" >

    </tbody>
  </table>
</form>

JavaScript:

var InventoryBody = $('.InventoryTableBody');
 $.each(res.Inventory, function(index,value){
 $.each(value, function(id, val){ 
InventoryBody.append(` <tr><td>${value[id].EntityName}</td>
<td><select id="${value[id].EntityName}add"> <option>${value[id].AddLevel[0]}</option><option>${value[id].AddLevel[1]}</option><option>${value[id].AddLevel[2]}</option></select></td>  
 <td> <select id="${value[id].EntityName}edit"> <option>${value[id].EditLevel[0]}</option><option>${value[id].EditLevel[1]}</option><option>${value[id].EditLevel[2]}</option></select></td>  
 <td> <select id="${value[id].EntityName}delete"> <option>${value[id].DeleteLevel[0]}</option><option>${value[id].DeleteLevel[1]}</option><option>${value[id].DeleteLevel[2]}</option></select></td>
<td> <select id="${value[id].EntityName}inquire"> <option>${value[id].InquireLevel[0]}</option><option>${value[id].InquireLevel[1]}</option><option>${value[id].InquireLevel[2]}</option></select></td>
                    <td></td><td></td> </tr>`);
                  })
                })


var InvFm=$("#InventoryFrm").serializeArray();

Что дает мне такой объект, как так

{name: "Items add", value: "All"}
{name: "Items edit", value: "All"}
{name: "Items delete", value: "All"}
{name: "Items inquire", value: "All"}

Технически это всего одна строка для «Предметов», и она должна выглядеть примерно так:

Name: "Items" Add: "All" Edit: "All" Delete: "All" Inquire: "All"

Идея состоит в том, что он динамический, поэтому кто-то может изменить его по мере необходимости, так что Предметы нене "жестко запрограммирован" в любом. Если я получу TR, мне придется иметь дело с HTML, что означает еще больше ненужных данных для отсеивания. Есть ли лучший способ, чтобы я пропустил / переосмыслил, чтобы получить соответствующие данные из строки, или я застрял, конвертируя

1 Ответ

0 голосов
/ 29 октября 2019

Если формат всегда будет: {name: "OBJECT ACTION", value: "VALUE"}, то ваш процесс довольно прост.

  • Получить строку один.
  • Разбить имя на пробел. Это дает вам «ОБЪЕКТ».
  • Итерация по каждой строке.
  • Разбить имя на пробел. Это дает вам «ДЕЙСТВИЕ».
  • Захватите значение. Это дает вам "VALUE.

. В этот момент вы просто переформатируете данные по мере необходимости.


Обновление на основе комментария

Если в некоторых ваших объектах есть пробелы, все они могут быть не потеряны. Если в ваших действиях нет , в них есть пробелы, вы можете использовать выражение regex для запроса всех, кроме действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...