Javascript Can';t使用d3选择svg元素

Javascript Can';t使用d3选择svg元素,javascript,svg,d3.js,Javascript,Svg,D3.js,我正在开发一个可视化工具,它使用svg的大脑图像。现在,此svg具有填充颜色的路径。我想在所有这些路径上循环以将填充颜色设置为白色,但由于某些原因,我无法获取元素 可以看到这个项目。svg在一个div中,我甚至给div分配了一个标识符brain。svg本身有一个idsvg2。到目前为止,我已经尝试了以下方法: function clearBrainColors() { var brain = d3.select("#svg2"); console.log(brain);

我正在开发一个可视化工具,它使用svg的大脑图像。现在,此svg具有填充颜色的路径。我想在所有这些路径上循环以将填充颜色设置为白色,但由于某些原因,我无法获取元素

可以看到这个项目。svg在一个
div
中,我甚至给div分配了一个标识符
brain
。svg本身有一个id
svg2
。到目前为止,我已经尝试了以下方法:

function clearBrainColors() {
    var brain = d3.select("#svg2");
    console.log(brain);
    var paths = brain.selectAll("path");
    console.log(paths.length);
    brain.selectAll('path').each(function(d,i) { console.log(this); });
}
但它在选择的数组[0]组件中输出null,并在paths.length中输出0

我也尝试过使用一些行,比如

var brain=d3.选择(“brain svg”)
var brain=d3。选择(“#brain svg#svg2”)但这些也不起作用


那么,我如何使用d3选择brain svg呢?

决定将svg内联

现在,我用来填充svg的代码是:

$("#svg2").find("path").each(function(){
       $(this).css({ fill: "#ff0000" });
    });
您可以尝试setTimeOut(),如下示例

setTimeOut(function() {

    var brain = d3.select("#svg2");
    console.log(brain);

}, 1000);
这可能是svg正在现场生成,d3当时无法获取


希望有帮助:)

课堂上的“点”不是你的大脑吗?只需查看开发人员工具中的元素。你有一把简单的小提琴也可以看吗?没有,那是散点图中的点。大脑在一个单独的文档中,你通过
标签加载。CSS不适用于所有文档。要么在SVG中运行d3,要么使SVG内联。@RobertLongson我想使用javascript(d3)应用css,所以不要直接应用css。但也许你甚至不能用Javascript访问svg。。。说得好,我会调查的。编辑:显然,您应该能够看到,如果您通过javascript获得包含的文档,您可以深入了解它的CSS。