My use case is pretty common and surely it is in some tutorial but I cannot find the right place where to look, so let me post here. I would like to generate an HTML table from JSON data coming from a server. I am a very green when it comes to Javascript, so naively I wrote the following code:
var a = [["a","b","c"],[1,2,3],[4,5,6]]; // the array will be read from the server in the real app $("#mytable").click(function() { $ (this).append("<table>"); $ (this).append("<thead>"); $ (this).append("<tr>"); for(j=0; j<3; j++) { $(this).append("<th>" + a[0][j] + "</ th>");}; $(this).append("</ tr>"); $(this).append("</ thead>"); $ (this).append("<tbody>"); for(i=1; i<3; i++) { $ (this).append("<tr>"); for(j=0; j<3; j++) { $(this).append("<td>" + a[i][j] + "</ td>"); }; $(this).append("</ tr>"); }; $(this).append("</ tbody>"); $(this).append("</ table>"); }); When I click on #mytable and I look at the generated HTML with Firebug I get <table/> <thead/> <tr/> <th>a</th> <th>b</th> <th>c</th> <tbody/> <tr/> <td>1</td> <td>2</td> <td>3</td> <tr/> <td>4</td> <td>5</td> <td>6</td> What's happening here? It seems .append is inserting closed tags instead of what I told it to append. I am pretty convinced that I should have generated the tags with document.createElement instead, but I did expect .append to work for a quick and dirty experiment. Anybody here can shed some light? TIA, Michele Simionato