D3.js d3js中节点文本中的换行符

D3.js d3js中节点文本中的换行符,d3.js,D3.js,我正在使用.html(函数(d){return d.name+“”+d.label;})在节点文本中添加一个换行符,但它不起作用。这是JSFIDLE。否,文本DOM中不考虑br标记 您必须使用tspan并对其进行定位 .html(function (d) { var x = d3.select(this).attr("x");//get the x position of the text var y = d3.select(this).attr("dy");/

我正在使用
.html(函数(d){return d.name+“
”+d.label;})
在节点文本中添加一个换行符,但它不起作用。这是JSFIDLE。

否,文本DOM中不考虑br标记

您必须使用tspan并对其进行定位

 .html(function (d) {
        var x = d3.select(this).attr("x");//get the x position of the text
        var y = d3.select(this).attr("dy");//get the y position of the text
        var t = "<tspan x="+x+" dy="+(+y+10)+">"+d.label+"</tspan>";
        return d.name + t;//appending it to the html
    }
.html(函数(d){
var x=d3.select(this).attr(“x”);//获取文本的x位置
var y=d3.select(this).attr(“dy”);//获取文本的y位置
变量t=“”+d.label+”;
返回d.name+t;//将其附加到html
}
完整工作代码

希望这有帮助!


在svg中也能工作。请使用
tspan

.html(function (d) {
  return "<tspan x='0' dy='1.2em'>" + d.name + "</tspan>" 
       + "<tspan x='0' dy='1.2em'>" +d.label + "</tspan>";
})
.html(函数(d){
返回“+d.name+”
+“+d.标签+”;
})
有关自动换行,请参见Mike Bostock。

在这里,我更新了我编写的代码换行函数:
函数wordwrap2(text){return text.split(“-”)}
,并在对节点进行分层时使用它:
。每个(函数(d){
如果(d.标签)
{
var r=d.name;
var s=d.标签;
var s=d.name+“-”+d.label;
变量行=wordwrap2(s)
对于(变量i=0;i
}

})

谢谢Cyril,工作正常。