d3.js - 从html获取d3.js数据

标签 d3.js

我是 d3.js 的新手,并试图了解如何检索 html 页面上已有的元素。

如果我尝试如下操作,当我查看控制台日志时,“d”未定义。我可以通过“this”关键字访问一些 td 信息,但查看 d3 API https://github.com/mbostock/d3/wiki/Selections#wiki-style ,它表示如果 style 将一个值作为函数,它会传递当前的“数据”和索引。

我可以很好地获取索引,但数据始终未定义。我是否缺少一些明显的东西来检索值,或者有错误的方法?

<table class="results">
<tr><td>13/1/0014</td><td>81</td><td>3</td><td></td></tr>
<tr><td>12/1/0014</td><td>690</td><td>47</td><td></td></tr>
<tr><td>5/1/0014</td><td>450</td><td>26</td><td></td></tr>
</table>

d3.selectAll(".results td:nth-child(4n+2)")
  .style("background-color", function(d) { 
         console.log( d );

         //change style depending on d, but d is always undefined
         //I can access the elements via this, but not d ? 

});

jsfiddle http://jsfiddle.net/a5WkH/2/

最佳答案

D3 假定您使用 .data().datum() 将数据绑定(bind)到元素。如果您还没有这样做,像 function(d) { ... } 这样的东西将不起作用。从技术上讲,D3 将绑定(bind)到 DOM 元素的数据作为 .__data__ 属性添加到该元素。因此,如果您确实不想使用 .data().datum(),您可以这样做。

d3.selectAll(".results").each(function() { this.__data__ = d3.select(this).text(); });

这就是我所做的here 。不过,通常最好使用 .data()

关于d3.js - 从html获取d3.js数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097798/

相关文章:

svg 元素的 CSS 填充属性

javascript - svg:子元素改变其父元素(svg 容器)的大小

javascript - D3JS : Interpolating missing time value as null in time series data

javascript - 在 D3.js 中调用函数作为数据

javascript - Crossfilter (d3js/dcjs) 获取组内组大小

javascript - 如何在 Canvas 上悬停时展开图像?

javascript - 如何单独更改 d3.js 条形图条的颜色并为它们制作比例尺?

javascript - D3 时间序列热图

javascript - d3.js 数据第一次未绑定(bind)

d3.js - d3 中的约束轴标签