简体   繁体   English

使用jQuery和JSON数组创建HTML表

[英]Create HTML table using jQuery and JSON array

I'm having difficulty trying to create an HTML table from a returned JSON string. 我在尝试根据返回的JSON字符串创建HTML表时遇到困难。 Here's the JSON: 这是JSON:

{
    "Heading 1": ["name 1", "name 2", "name 3"],
    "Heading 2": ["data 1", "data 2", "data 3"],
}

The Table should look like this: 该表应如下所示:

<table>
    <thead>
        <tr>
            <th>Heading 1</th>
            <th>Heading 2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>name 1</td>
            <td>data 1</td>
        </tr>
        <tr>
            <td>name 2</td>
            <td>data 2</td>
        </tr>
        <tr>
            <td>name 3</td>
            <td>data 3</td>
        </tr>
    </tbody>
</table>

I gave the "head" created, but can't figure out the "body". 我创建了“头部”,但无法弄清楚“身体”。

var table = $('<table/>'),
    table_head = $('<thead/>'),
    head_row = $('<tr/>');

$.each(val, function (th, items) {
    head_row.append('<th>' + th + '</th>');

    var body_row = $('<tr/>');
    $.each(items, function (index, item) {

        // What do to here to create <td>'s ?!?!

    });
    console.log(items);
});

table_head.append(head_row);
table.append(table_head);

Just can't get the logic to work. 只是无法使逻辑起作用。 There are more headings in the returned JSON and tried to simplify for illustration. 返回的JSON中包含更多标题,并尝试简化以进行说明。 Please help, and thanks in advance! 请帮助,并在此先感谢!

It's better to just concatenate strings than create jQuery objects. 只连接字符串比创建jQuery对象更好。

 var json = { "Heading 1": ["name 1", "name 2", "name 3"], "Heading 2": ["data 1", "data 2", "data 3"], }; var headings = Object.keys(json); var html = '<table>'; // build table headings html += '<thead><tr>'; $.each(headings, function () { // this is the current heading html += '<th>' + this + '</th>'; }); html += '</tr></thead>'; // build table body html += '<tbody>'; // use the length of first array to determine how many rows for (i = 0, len = json[headings[0]].length; i < len; i++) { html += '<tr>'; // build each cell using the heading's ith element $.each(headings, function () { html += '<td>' + json[this][i] + '</td>'; }); html += '</tr>'; } html += '</tbody>'; html += '</table>'; $('.container').append(html); 
 table { border-collapse: collapse; } th, td { border: 1px solid #000; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="container"></div> 

create tr element if needed then use index to push td element 如果需要,创建tr元素,然后使用index推送td元素

 var json = { "Heading 1": ["name 1", "name 2", "name 3"], "Heading 2": ["data 1", "data 2", "data 3"], }; var table = $('<table/>'), table_head = $('<thead/>'), head_row = $('<tr/>'), table_body = $('<tbody/>'), body_row = []; $.each(json, function(th, items) { head_row.append('<th>' + th + '</th>'); $.each(items, function(index, item) { if (body_row[index] === undefined) { body_row[index] = $('<tr/>'); body_row[index].append('<td>' + item + '</td>'); } else body_row[index].append('<td>' + item + '</td>'); }); //console.log(items); }); table_head.append(head_row); table_body.append(body_row) table.append(table_head); table.append(table_body); $('body').html(table) 
 table { border-collapse: collapse; } th, td { border: 1px solid #ccc; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

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

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