javascript - 使用D3生成基本表时tbody标签元素返回空

标签 javascript html json d3.js

我正在尝试使用 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 标记为空?”)。从结果中可以看出,您的代码存在一些问题,这些问题不属于本问题的范围。

关于javascript - 使用D3生成基本表时tbody标签元素返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42915870/

相关文章:

javascript - node.js - 如何调整 child_process.spawn() 的标准输出缓冲区大小(又名 highWaterMark)?

javascript - 如何替换字符串中的 $1 , $2

javascript - 在 knockoutJS 中将 observableArray 的数据保留在客户端

javascript - 访问 Angular.js 中的 JSON 文件

java - 将javascript对象传递给java的JsonObject

json - 使用 JSON 对象通过 POST 方法调用 URL,但使用 Powershell

javascript - Puppeteer 单击 span 元素中的链接

javascript - HTML 变量和文本值传输到 PHP/javascript?

html - 页脚不保持底部位置

html - 两个 100% 宽度的表格;在宽屏幕上排成一行;在窄屏幕上分两行