Javascript 为什么d3.select().style()不应用于<;部门>-元素?
我已经盯着这个看了一段时间了,我只是不知道我做错了什么。我基本上是在尝试自己实现这个示例: 以与本文类似的方式,我有一个DOM结构,如下所示Javascript 为什么d3.select().style()不应用于<;部门>-元素?,javascript,d3.js,Javascript,D3.js,我已经盯着这个看了一段时间了,我只是不知道我做错了什么。我基本上是在尝试自己实现这个示例: 以与本文类似的方式,我有一个DOM结构,如下所示 <div id="d3"> <div id="labels"> <div class="label">Label</div> </div> <svg> << SVG-stuff >> </svg> </d
<div id="d3">
<div id="labels">
<div class="label">Label</div>
</div>
<svg> << SVG-stuff >> </svg>
</div>
但是:运行此操作时,不会对元素应用任何样式
我错过了什么?在这个例子中,这是怎么起作用的呢?我很乐意自己回答这个问题,以防其他人对此感到困惑。style() 上述情况下的问题是
d.dx
未定义,这意味着函数不返回任何内容
我只是没有意识到,如果是这种情况,甚至没有应用
.style()
确实适用于DOM中任何位置的div元素,只要定义了它的参数:
.style(“left”,函数(d){return d.x+“px”;})
如果将来有人看到这种情况,请确保您尝试应用的样式有效。我试图将元素的“文本锚定”样式设置为“右”,但它就是不去!结果是“结束”,而不是“正确”。“没有样式不应用于元素”我猜您的意思是“没有样式应用于元素”。您是否检查了样式是否已设置,或者您只是没有看到更改?有错误信息吗?请注意,您需要将数据绑定到您选择的元素,以使其正常工作。在本小提琴中对我有效:您需要添加position=“absolute”代码>如果你们还没有,谢谢你们!原来罪魁祸首是d.dx
确实未定义。我想,由于函数不返回任何内容,因此没有应用任何样式,甚至没有style=“left:;”
。
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"; })