D3.js d3力图将圆弧附加到节点中

D3.js d3力图将圆弧附加到节点中,d3.js,D3.js,我试图将弧附加到图形的节点上,如果我这样写,它可以工作: var arc = d3.arc() .innerRadius(13) .outerRadius(43) .startAngle(0) .endAngle(2 * Math.PI); var result = d3.select(".nodes") .append("path") .attr("d", arc) .at

我试图将弧附加到图形的节点上,如果我这样写,它可以工作:

var arc = d3.arc()
            .innerRadius(13)
            .outerRadius(43)
            .startAngle(0)
            .endAngle(2 * Math.PI);

var result = d3.select(".nodes")
    .append("path")
    .attr("d", arc)
    .attr("fill", "lightgrey")
    .attr("transform", "translate(" + d.x + "," + d.y + ")");
“d.x”和“d.y”实际上就是我单击的节点

但是,如果我只是使用单击的节点id选择节点:

   var result = d3.select("name_"+d.id)
    .append("path")
    .attr("d", arc)
    .attr("fill", "lightgrey")
    .attr("transform", "translate(" + d.x + "," + d.y + ")");
它不起作用。我可以成功打印出结果:

console.log(JSON.stringify(result));

我只是想知道为什么我不能直接按id选择?谢谢。

要按ID选择,您可以按以下方式进行:

  var output = "name_"+d.id;

  var result = d3.select("[id=" + output + "]")
    .append("path")
    .attr("d", arc)
    .attr("fill", "lightgrey")
    .attr("transform", "translate(" + d.x + "," + d.y + ")");

很抱歉输入错误:var result=d3.select(“#name_u“+d.id”)但notvar result=d3.select(“name_“+d.id”)您可以单击“编辑”链接更正原始帖子中的输入错误。