Javascript D3-如何获取文本选择中先前元素的宽度

Javascript D3-如何获取文本选择中先前元素的宽度,javascript,d3.js,Javascript,D3.js,在下面的代码中,我试图在屏幕上一个接一个地插入3个字符串 为此,我需要计算已经显示的标签的屏幕宽度,如attr(“x”,…)行中突出显示的那样 在d3中进行选择时,如何引用前面的元素 参考文献: var labels=['a label'、'另一个label'、'第三个label'] var textItems=svg.append('g') .selectAll(“.my\u labels\u text”) .数据(标签) .输入() .append(“文本”) .attr(“类”、“我的标签

在下面的代码中,我试图在屏幕上一个接一个地插入3个字符串

为此,我需要计算已经显示的标签的屏幕宽度,如
attr(“x”,…)
行中突出显示的那样

在d3中进行选择时,如何引用前面的元素

参考文献:

var labels=['a label'、'另一个label'、'第三个label']
var textItems=svg.append('g')
.selectAll(“.my\u labels\u text”)
.数据(标签)
.输入()
.append(“文本”)
.attr(“类”、“我的标签”文本)
.attr(“文本锚定”、“左”)
.attr(“x”,函数(d,i){return})
.attr(“y”,10)//任意y值
.text(函数(d){return d})

如果需要保持运行宽度计数;只需在外部范围中使用一个变量:


var标签=[“一个标签”、“另一个标签”、“第三个标签”];
var svg=d3.select('body')
.append('svg')
.attr('宽度',1000)
.attr('height',500);
var runningWidth=10;
var textItems=svg.append('g')
.selectAll(“.my\u labels\u text”)
.数据(标签)
.输入()
.append(“文本”)
.attr(“类”、“我的标签”文本)
.attr(“文本锚定”、“左”)
.text(函数(d){return d})
.attr(“y”,10)//任意y值
.attr(“x”,函数(d,i){
var thisWidth=this.getComputedTextLength(),
rV=运行宽度;
运行宽度+=此宽度;
返回rV;
});

有效,谢谢。注意:在为所有文本和格式参数赋值后,您需要阅读
getComputedTextLength
,以使其正常工作properly@Pythonic,是的,对不起,我应该在回答中提到这一点。这就是我改变行动顺序的原因。
.text
调用呈现它,这允许您计算文本长度。
var labels = ['a label', 'another label', 'a third label']

var textItems = svg.append('g')
    .selectAll('.my_labels_text')
    .data(labels)
    .enter()
    .append("text")
    .attr("class", "my_labels_text")
    .attr("text-anchor", "left")
    .attr("x", function (d, i)   { return <cumulated width of labels previously displayed>})
    .attr("y", 10) // arbitrary y value
    .text(function(d) { return d })