将当前元素索引传递给D3中的函数

时间:2014-02-26 18:52:26

标签: javascript d3.js

我使用this example中的代码创建一组独立行作为path元素:

svgContainer.append("path")
            .attr("d", lineFunction(lineData))
            .attr("stroke", "blue")
            .attr("stroke-width", 2)
            .attr("fill", "none");

由于我在lineData数组中拥有所有行数据,因此在每次迭代中我只想传递一个项目,例如lineFunction(lineData[i])。我的问题是如何获得当前索引,因为我通常可以在D3中使用someFunction(d, i){}

1 个答案:

答案 0 :(得分:2)

您需要先以典型的d3方式绑定到lineData。所以:

svgContainer.selectAll('path').data(lineData).enter()
  .append("path")
    .attr("d", lineFunction)
    .attr("stroke", "blue")
    .attr("stroke-width", 2)
    .attr("fill", "none");

在线

    .attr("d", lineFunction)

lineFunction使用di作为参数调用,其中d是数组中的元素(如果我理解的话,它是一个点数组)。这和做

一样
    .attr("d", function(d,i) { return lineFunction(d); }

相同
    .attr("d", function(d,i) { return lineFunction( lineData[i]); }