我正在尝试使用D3从外部json文件中读取数据来生成表格,还将参数“ fieldNamesUnique”传递给函数。该函数执行没有错误,但是tbody标签为空。
这是JSON数据:
[
{
"Label": "External-Partner-Induced",
"Count": 9
},
{
"Label": "Null",
"Count": 1
},
{
"Label": "FCTS-Induced",
"Count": 66
},
{
"Label": "EI-Partner-Induced",
"Count": 78
}
]
这是d3代码
function testFunction(fieldNamesUnique) {
data = d3.json('json/dataQualityIssuesCategory.json')
tabulate(data, ['Category', 'Count']);
}
function tabulate(data, columns) {
var table = d3.select('#response').append('table')
var thead = table.append('thead')
var tbody = table.append('tbody');
// append the header row
thead.append('tr')
.selectAll('th')
.data(columns)
.enter()
.append('th')
.text(function (column) { return column; });
// create a row for each object in the data
var rows = tbody.selectAll('tr')
.data(data)
.enter()
.append('tr');
// create a cell in each row for each column
var cells = rows.selectAll('td')
.data(function (row) {
return columns.map(function (column) {
return {column: column, value: row[column]};
});
})
.enter()
.append('td')
.text(function (d) { return d.value; });
return table;
}
结果如下:
page source
有人可以帮我找出为什么tbody标签为空吗?
最佳答案
d3.json
不返回任何内容(从技术上来说,它返回与请求相关的对象)。
因此,您不能执行以下操作:
data = d3.json('json/dataQualityIssuesCategory.json')
取而代之的是,
data
必须是回调中的参数:d3.json("dataQualityIssuesCategory.json", function(data){
//parameter here -------------------------------^
//code using 'data' here
});
这是带有您代码的代码:https://plnkr.co/edit/jJQHWSz0wvQkWFqULq7t?p=preview
PS:我只回答您的问题(“为什么tbody标签为空?”)。正如您从结果中看到的那样,您的代码存在一些问题,不在本问题范围内。