定义时D3样式化SVG元素

时间:2016-01-18 14:04:09

标签: javascript d3.js svg

我有一个带有轴的D3图表,我希望通过原始调用来设置它。然而,它似乎只在第一次通话时工作。我会告诉你我的意思:

当我通过

创建轴时
svg.select('g.y.axis').call(yaxis)
    .selectAll("path")
        .attr("fill","none")
      .attr("stroke", "#000")
    .selectAll("line")
        .attr("fill","none")
      .attr("stroke", "#000");

仅正确设置路径样式。您可以查看我的jsfiddle以了解我的意思。我知道这可能比仅仅拥有CSS样式要慢,但是我需要在原始调用中对其进行样式设置我正在处理的内容。提前致谢!

1 个答案:

答案 0 :(得分:1)

这是因为d3.selectAll("foo").selectAll("bar")将尝试查找<bar> s,它们是创建<foo> s的内部元素。在您的情况下,svg在<line> s中找不到<path>

只需单独打电话:

svg.selectAll("path")...
svg.selectAll("line")...

UPD 要在.y.axis中找到路径/行:

svg.select(".y.axis").selectAll("path")

svg.selectAll(".y.axis path")