Create and populate a html table form an array within an array (matrix)
Based on Nested Selections
Create and populate a html table form an array within an array (matrix)
Based on Nested Selections
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Making a table from matrix</title> <!-- based on http://bost.ocks.org/mike/nest/ --> | |
| <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> | |
| <style> | |
| body {font-family: monospace; line-height: 160%; font-size: 18px; margin: 0;} | |
| table { | |
| border-collapse: collapse; | |
| border-spacing: 0; | |
| } | |
| th, td { | |
| padding: 1rem; | |
| text-align: right; | |
| border: 1px dotted #ccc; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <script> | |
| var matrix = [ | |
| [ 0, 1, 2, 3], | |
| [ 4, 5, 6, 7], | |
| [ 8, 9, 10, 11], | |
| [12, 13, 14, 15], | |
| [16, 17, 18, 19, 20], | |
| [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], | |
| ]; | |
| // selecting the body | |
| var body = d3.select("body"); | |
| // append a table element to the body | |
| var table = body.append("table"); | |
| // append entering rows to the table via data-join (Since selectAll is called on the selected table element, it establishes a new parent node of table instead of the default html) | |
| var tr = table.selectAll("tr") | |
| .data(matrix) | |
| .enter() | |
| .append("tr"); | |
| // append entering cells to each row | |
| var td = tr.selectAll("td") | |
| .data(function(d) { return d; }) | |
| .enter() | |
| .append("td"); | |
| // add content from the dataset | |
| var content = td.text(function(d) { return d; }); | |
| // manipulate colour of specific cells and rows: j is row ,and i is column | |
| td.style("color", function(d, i, j) { return (j<2 && i<2 ) ? null : "red"; }); | |
| </script> | |
| </body> | |
| </html> |