Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 D3选择有效,而svg选择无效_Javascript_Html_Svg_D3.js - Fatal编程技术网

Javascript D3选择有效,而svg选择无效

Javascript D3选择有效,而svg选择无效,javascript,html,svg,d3.js,Javascript,Html,Svg,D3.js,我有 后来我 var svg = d3.select(.....) .append("svg") .attr("width", 1500) .attr("height", 850); 在匿名函数中,我更改了一些svg内容的样式。 但是我试着去做 svg.SelectAll(......) . . .on("mouseover", function(){ d3.select(this).st

我有

后来我

var svg = d3.select(.....)
            .append("svg")
            .attr("width", 1500)
            .attr("height", 850);
在匿名函数中,我更改了一些svg内容的样式。 但是我试着去做

svg.SelectAll(......)
   .
   .
   .on("mouseover", function(){
        d3.select(this).style(.....
   }
而不是

svg.select(this).style....
然后它就坏了


为什么必须使用d3而不是svg?

d3.select接受两种类型的参数—选择器字符串和DOM元素。selection.select svg.select在您的案例中只接受选择器字符串。您正在传入一个DOM元素,该元素会破坏代码,并相应地收到一条错误消息。

您的问题标题具有误导性。d3是d3库的对象,而svg只是由您显示的代码创建的一些变量。现在,我可以猜测,但最好告诉我们,当您尝试调用svg元素的select方法时,它到底是如何损坏的……有任何错误吗?我当然为此道歉。我理解d3对象和svg变量之间的区别。我想我的问题是,既然我的svg组件在svg上,为什么我需要使用d3对象来更改我的svg组件的属性?谢谢Lars的回答。明白了。非常感谢你!更准确地说,selection.select接受选择器字符串以及返回元素的函数。这两种方法的主要区别在于,d3.selectnode将返回一个包含一个节点的选择,而selection.selectnode将返回selection的子选择,并保留其初始分组。@altocumulus不确定从何处获得该结果;这对我不起作用。医生告诉我;-这是返回thisnode的匿名函数的范围问题。在函数内部,该函数指向窗口。这可以很容易地通过关闭来解决。看我的。哦,当然,你是对的。谢谢你的加入!
d3.select(this).style....