Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用d3js在SVGElement路径中迭代?_Javascript_Svg_D3.js - Fatal编程技术网

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

我将学习本教程:

我想确定每个州的中心区域,但我有两个问题:

  • 如何迭代每个状态的SVG元素
  • 如何确定特定SVG元素的中间坐标
  • MyG元素包含许多路径,其中每个路径表示一个状态。似乎当我使用以下代码时:

    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)
    });