我正在尝试使用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标签为空?”)。正如您从结果中看到的那样,您的代码存在一些问题,不在本问题范围内。

07-24 09:20