Convert JSON array to an HTML table in jQuery

前端 未结 15 1095
温柔的废话
温柔的废话 2020-11-22 16:33

Is there a really easy way I can take an array of JSON objects and turn it into an HTML table, excluding a few fields? Or am I going to have to do this manually?

15条回答
  •  不知归路
    2020-11-22 16:57

    Using jQuery will make this simpler.

    The following code will take an array of arrays and store convert them into rows and cells.

    $.getJSON(url , function(data) {
        var tbl_body = "";
        var odd_even = false;
        $.each(data, function() {
            var tbl_row = "";
            $.each(this, function(k , v) {
                tbl_row += ""+v+"";
            });
            tbl_body += ""+tbl_row+"";
            odd_even = !odd_even;               
        });
        $("#target_table_id tbody").html(tbl_body);
    });
    

    You could add a check for the keys you want to exclude by adding something like

    var expected_keys = { key_1 : true, key_2 : true, key_3 : false, key_4 : true };
    

    at the start of the getJSON callback function and adding:

    if ( ( k in expected_keys ) && expected_keys[k] ) {
    ...
    }
    

    around the tbl_row += line.

    Edit: Was assigning a null variable previously

    Edit: Version based on Timmmm's injection-free contribution.

    $.getJSON(url , function(data) {
        var tbl_body = document.createElement("tbody");
        var odd_even = false;
        $.each(data, function() {
            var tbl_row = tbl_body.insertRow();
            tbl_row.className = odd_even ? "odd" : "even";
            $.each(this, function(k , v) {
                var cell = tbl_row.insertCell();
                cell.appendChild(document.createTextNode(v.toString()));
            });        
            odd_even = !odd_even;               
        });
        $("#target_table_id").append(tbl_body);   //DOM table doesn't have .appendChild
    });
    

提交回复
热议问题