D3.js 使用'更改样式;选择All';和';选择';问题

D3.js 使用'更改样式;选择All';和';选择';问题,d3.js,D3.js,我试图改变一些svg元素的样式。 当我这样做时: var circleSelected = d3.select("#circleid_2"); circleSelected.style("fill", "purple"); circleSelected.style("stroke-width", 5); circleSelected.style("stroke", "red"); 圆圈正在改变它的样式 但是,当我这样做时: var allCir

我试图改变一些svg元素的样式。 当我这样做时:

var circleSelected = d3.select("#circleid_2");
        circleSelected.style("fill", "purple");
        circleSelected.style("stroke-width", 5);
        circleSelected.style("stroke", "red");
圆圈正在改变它的样式

但是,当我这样做时:

 var allCircles = d3.selectAll(".circle");
        allCircles.forEach(function (circle) {
            circle.style("fill", "green"); //function(d) { return getNodeColor(d); }
        });
它无法处理错误:对象[Object SVGCircleElement]没有方法“style”

下面是我的“圈”声明(注意:它既有类又有id):

我做错了什么?谢谢你的帮助

试试看:

d3.selectAll("circle").style("fill", "green");
或:

解释
d3.selectAll
将返回一个选择,可使用此API中描述的函数对其进行操作:


但是,一旦您执行了forEach,每次作为
圆圈
返回的内部变量将是一个实际的DOM元素-不再是一个选择,因此不再附加
样式
函数。

。。如果forEach返回一个DOM元素,那么我可以使用jQuery对其进行样式设置,对吗?是的,混合使用jQuery和d3是一种非常常见的做法。如果您想迭代,应该使用每个函数。检查这个:在我的例子中,回调没有接收参数,我必须使用:d3.select(这个)
d3.selectAll("circle").style("fill", "green");
allCircles.style("fill", "PaleGoldenRod");