Когда цикл проходит через HtmlTableElement и конвертируется в json, он конвертирует только первую таблицу json object.but не socond объект - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть несколько таблиц.при циклическом просмотре каждого файла table.innerHtml выводите все таблицы по очереди. Но при преобразовании в объект он дает только один табличный объект.

$( ".table" ).each(function( index ,e) {
    let tableId = $(this).closest('table').attr('id')
    var table = document.getElementById(tableId);
    console.table(table.innerHTML+"tb");
    let myObj = {
        table: [],
        add_rows: []
    };
    for (var i = 0; row = table.rows[i]; i++) {
       let tr_obj = [];
       for (var j = 0; col = row.cells[j]; j++) {
          var drop_down = $("#drop\\[" + j + "\\]").val()
          var text_value = $("#text\\[" + i + "\\]\\[" + j + "\\]").val();
          tr_obj.push(create_object(drop_down, text_value));
        }
        myObj['table'].push(tr_obj);
    }
    console.log(JSON.stringify(myObj['table'])+"ttt")
    var div="div"+tableId
    var hidden="entry_field_"+tableId+""
    document.getElementById(hidden).value = JSON.stringify(myObj).replace(/\\/g, "")
});

когда мы консоль table.InnerHtml, он выводит оба table.but MyObj даеттот же объект таблицы.

1 Ответ

1 голос
/ 23 сентября 2019

Я улучшил вашу скрипку, и myObj создан правильно (в свойстве table есть строки из обеих таблиц).Но если вы хотите визуализировать этот объект в формате json, вам нужно изменить дизайн этого объекта или отобразить один и тот же объект в двух таблицах.Если вы хотите визуализировать два объекта с различной tables опорой, вам нужно конвертировать myObj в отдельные объекты.Посмотри на мою скрипку:

table.forEach((e,i)=>{
  let tr_obj = [];
  Array.from(e.rows).forEach((ele,ind)=>{
    let cells = []
    Array.from(ele.cells).forEach((element,index)=>{
      let drop_down = $("#drop\\[" + i + "\\]\\[" + ind + "\\]\\[" + index + "\\]").val();
      let text_value = $("#text\\[" + i + "\\]\\[" + ind + "\\]\\[" + index + "\\]").val();
      cells.push(create_object(drop_down, text_value));
    })
    tr_obj.push(cells)
  });
  myObj['table'].push(tr_obj);
});

И на скрипке: https://jsfiddle.net/wa3vbsc6/2/

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