D3.js 使用'更改样式;选择All';和';选择';问题
我试图改变一些svg元素的样式。 当我这样做时: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
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");