我在d3.js中定义了一个路径,它正确绘制,但.getTotalLength()未定义

时间:2016-09-13 19:50:43

标签: javascript d3.js svg

以下代码从数据生成路径。

var path = gameBoard.append('path')
   .attr("id", "snake" + snakeIndex)
   .attr("d", interpolator(data))
   .attr('stroke-width', snakeStroke)
   .attr('fill', 'none')
   .attr('stroke', config.snakeColor);

数据定义的曲线路径正确绘制。

此处失败getTotalLength()未定义:

var totalLength = path.getTotalLength();

此外,还没有定义getPointAlongLength():

var point = path.getPointAtLength(position);

2 个答案:

答案 0 :(得分:7)

而不是:

var totalLength = path.getTotalLength();

必须是:

var totalLength = path.node().getTotalLength();

getTotalLength()适用于节点,但path是D3选择,而不是DOM元素本身。因此,您必须使用path.node()

答案 1 :(得分:2)

是的,我发现我必须使用path.node()来获取正确的对象。 d3.js文档非常难以阅读,只有很少的例子。