Javascript 当我想要更改值时,我无法在svg中选择(“文本”)

Javascript 当我想要更改值时,我无法在svg中选择(“文本”),javascript,html,d3.js,Javascript,Html,D3.js,我有一个问题,我可以将文本附加到SVG中,但是当我想要更改它时,我似乎无法选择要更改的文本。d3上方的代码。选择(“按钮”)所有功能以及条。转换功能。有人能帮我找出如何选择“文本”,这样当我点击按钮时,它将使用新的数据集吗 var bar=svg.selectAll(“rect”) .数据(数据集) .enter(); 附加条(“rect”) .attr(“x”,函数(d){ 返回xScale(d[0]); }) .attr(“y”,函数(d){ 返回yScale(d[2]); }) .att

我有一个问题,我可以将文本附加到
SVG
中,但是当我想要更改它时,我似乎无法选择要更改的文本。
d3上方的代码。选择(“按钮”)
所有功能以及
条。转换功能
。有人能帮我找出如何选择
“文本”
,这样当我点击按钮时,它将使用新的数据集吗

var bar=svg.selectAll(“rect”)
.数据(数据集)
.enter();
附加条(“rect”)
.attr(“x”,函数(d){
返回xScale(d[0]);
})
.attr(“y”,函数(d){
返回yScale(d[2]);
})
.attr(“宽度”,xScale.bandwidth())
.attr(“高度”,功能(d){
返回高度——yScale(d[2]);
})
.attr(“类”,函数(d){
var s=“bar”;
如果(d[2]<50){
返回s+“bar1”;
}否则如果(d[2]<100){
返回s+“bar2”;
}否则{
返回s+“bar3”;
}
});
附加条(“文本”)
.attr(“dy”、“1.3em”)
.attr(“x”,函数(d){
返回xScale(d[0])+xScale.bandwidth()/2;
})
.attr(“y”,函数(d){
返回yScale(d[2]);
})
.attr(“文本锚定”、“中间”)
.attr(“字体系列”、“无衬线”)
.attr(“字体大小”,“11px”)
.attr(“填充”、“黑色”)
.文本(功能(d){
返回d[2];
});
d3.选择(“按钮”)
.on(“单击”,函数(){
变量数据集=[
[Jun-19',8.6,21.7],
[Jul-19',8.68,17.98],
['Aug-19',8.9,25.38],
[Sep-19',6.38,11.6],
['10-19',10.36,65.08],
[Nov-19',22.36,125.72],
[Dec-19',26.52112.22],
[Jan-20',21.08,76.1],
[Feb-20',6,44,19.625],
[Mar-20',4.68,8.95],
[Apr-20',7.4,15.94],
['May-20',7.36,18.36]
];
bar=svg.selectAll(“rect”)
.数据(数据集);
bar.transition()
.attr(“x”,函数(d){
返回xScale(d[0]);
})
.attr(“y”,函数(d){
返回yScale(d[2]);
})
.attr(“宽度”,xScale.bandwidth())
.attr(“高度”,功能(d){
返回高度——yScale(d[2]);
})
.attr(“类”,函数(d){
var s=“bar”;
if(d[2]<30){
返回s+“bar1”;
}否则如果(d[2]<60){
返回s+“bar2”;
}否则{
返回s+“bar3”;
}
});
svg.selectAll(“文本”)
.数据(数据集)
.transition()
.attr(“dy”、“1.3em”)
.attr(“x”,函数(d){
返回xScale(d[0])+xScale.bandwidth()/2;
})
.attr(“y”,函数(d){
返回yScale(d[2]);
})
.attr(“文本锚定”、“中间”)
.attr(“字体系列”、“无衬线”)
.attr(“字体大小”,“11px”)
.attr(“填充”、“黑色”)
.文本(功能(d){
返回d[2];
});

});
不能将
文本
节点附加为
rect
节点的子节点,因此SVG可能永远不会呈现。尝试在每个条中使用
g
节点,并将
rect
文本添加到该节点。例如,您可以给它类
barContainer

至于选择
文本
并忽略轴上的文本,请按照@Andrew Reid在其评论中所说的操作,并使用
barContainer.selectAll(“文本”)
。或者,您可以为所有标签指定类
label
,然后使用
svg。selectAll(“.label”)

svg。selectAll(“text”)
不区分记号或其他文本,尝试指定您想要的文本,并在需要更新时按该类进行选择,或者,您可以创建一个
g
来保存更新的文本和条形图,然后使用
g.selectAll(“文本”)