Javascript 使用d3js在SVGElement路径中迭代?
我将学习本教程: 我想确定每个州的中心区域,但我有两个问题:Javascript 使用d3js在SVGElement路径中迭代?,javascript,svg,d3.js,Javascript,Svg,D3.js,我将学习本教程: 我想确定每个州的中心区域,但我有两个问题: 如何迭代每个状态的SVG元素 如何确定特定SVG元素的中间坐标 MyG元素包含许多路径,其中每个路径表示一个状态。似乎当我使用以下代码时: states.selectAll("path") 我想使用以下方法找到路径的中心: states.selectAll("path").attr("d", function(d) { // Get centroid(d) }); 但是函数参数没有任何作用。这是a
states.selectAll("path")
我想使用以下方法找到路径的中心:
states.selectAll("path").attr("d", function(d) {
// Get centroid(d)
});
但是函数参数没有任何作用。这是attr的错误用法。带有第二个参数的attr函数用于设置属性,而不仅仅用于迭代集合。您应该使用each函数 选择。每个(功能) 为当前文件中的每个元素调用指定的函数 选择,传递当前数据d和索引i,使用 当前DOM元素的上下文。此运算符在内部使用 几乎所有其他运算符都可以使用,并且可以用于调用任意 每个选定元素的代码。每个操作员都可以使用 使用d3递归地处理选择。在 回调函数
states.selectAll("path").each(function(d, i) {
// Get centroid(this.d)
});