为什么 d3.select().style() 不适用于 <div> 元素?

Oll*_*son 5 javascript d3.js

我已经盯着这个看了有一段时间了,我只是不明白我做错了什么。我基本上试图自己实现这个例子:http://vallandingham.me/building_a_bubble_cloud.htm

以与本文类似的方式,我有一个如下所示的 DOM 结构

<div id="d3">
    <div id="labels">
        <div class="label">Label</div>
    </div>
    <svg> << SVG-stuff >> </svg>
</div>
Run Code Online (Sandbox Code Playgroud)

据我了解,在本文中,标签 div 是通过 d3 的 tick 函数内的 .style() 函数定位的。因此:

d3.selectAll(".label")
   .style("left", function(d) { return d.x - (d.dx / 2) + "px"; })
   .style("left", function(d) { return d.x - (d.dx / 2) + "px"; })
Run Code Online (Sandbox Code Playgroud)

但是:运行时,不会将任何样式应用于元素!

我缺少什么?为什么这在示例中有效?

Oll*_*son 2

好吧,我很高兴自己回答这个问题,以防万一其他人对 .style() 感到困惑

上述情况的问题是d.dx未定义,这意味着该函数不返回任何内容。

我只是没有意识到,如果是这样的话,甚至不<div style="left: ; rigt: ;">适用。

.style()只要定义了参数,它确实可以作用于 DOM 中任何地方的 div 元素:

.style("left", function(d) { return d.x + "px"; })