简体   繁体   English

使用json创建单个html表

[英]create single html table using json

此格式的预期表

this script generates 4 jquery ui tabs with 4 html tables inside it, 这个脚本会生成4个jquery ui标签,其中包含4个html表,

how do i combine these tables to make it in a single table, attached a screenshot of final table. 我如何将这些表组合成一个表,并附上最终表的屏幕截图。

var data = $.parseJSON("{\"version\":\"5.2\",\"user_type\":\"online\",\"user\":[{\"name\":\"John\",\"id\":50},{\"name\":\"John\",\"id\":51},{\"name\":\"John\",\"id\":57},{\"name\":\"John\",\"id\":98}]}");

const setTables = new Set();
$.each(data.user, function(key, value) {
let table;
var row = $("<tr/>");

if ($('table#main_table_' + value.id).length)
    table = $("#main_table_" + value.id);
else
    table = $('<table class="table table-responsive table-hover table-bordered"></table>');
    table.attr('id', 'main_table_' + value.id);

row.append($("<td/>").text(value.name));
row.append($("<td/>").text(value.id));

table.append(row);

if(!setTables.has(value.id)) {
    table.append( $("<thead><tr><th>NAME</th><th>ID</th></tr></thead>") );
    setTables.add(value.id);
    $( "#ul-tabs" ).append("<li><a href=\"#tabs-"+ value.id +"\">"+value.name+"</a></li>");
    $( "#tabs" ).append("<div id=\"tabs-"+value.id+"\">"+table.prop('outerHTML')+"</div>");
}
});

$( "#tabs" ).tabs();

View fiddle . 查看小提琴

I refactor your code to achieve this. 我重构您的代码来实现这一目标。

 var data = $.parseJSON("{\\"version\\":\\"5.2\\",\\"user_type\\":\\"online\\",\\"user\\":[{\\"name\\":\\"John\\",\\"id\\":50},{\\"name\\":\\"John\\",\\"id\\":51},{\\"name\\":\\"John\\",\\"id\\":57},{\\"name\\":\\"John\\",\\"id\\":98},{\\"name\\":\\"XYZ\\",\\"id\\":1},{\\"name\\":\\"XYZ\\",\\"id\\":50},{\\"name\\":\\"XYZ\\",\\"id\\":45},{\\"name\\":\\"XYZ\\",\\"id\\":98}]}"); let names = data.user.map(i => i.name) .filter((el, i, a) => a.indexOf(el) == i); function idsForName(name, array) { return array.filter(el => el.name === name).map(el => el.id); } let $table = $('<table class="table table-responsive table-hover table-bordered"></table>'); $table.attr('id', 'main_table'); let $thead = $("<thead/>"); let $tbody = $("<tbody/>"); let $hRow = $("<tr/>").addClass('head-row'); if(names.length) $hRow.append($("<th/>").text('NAME')); names.forEach(el => { let $row = $("<tr/>"); $row.append($("<td/>").text(el)); let ids = idsForName(el, data.user); ids.forEach((id, index) => { let th = '.th-' + index; if(!$hRow.find(th).length) $hRow.append($("<th/>").addClass('th-' + index).text('ID')); $row.append($("<td/>").text(id)); }); $tbody.append($row); }); $thead.append($hRow); $table.append($thead).append($tbody); $('#tabs').append($table.prop('outerHTML')) 
 body{ margin: 20px; } th { text-align: center; } td { text-align: center; } table { border-collapse: separate; } .table-responsive { width: 100%; } div#export_excel { float: right; padding-right: 20px; padding-top: 4px; } button#btnExport { text-transform: uppercase; font-weight: 100; } 
 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="tabs"> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM