Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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图形事件侦听器之外的任意位置_Javascript_D3.js - Fatal编程技术网

Javascript D3图形事件侦听器之外的任意位置

Javascript D3图形事件侦听器之外的任意位置,javascript,d3.js,Javascript,D3.js,基本上,我有一个图形,用户可以在其中单击不同的SVG形状,通过这样做,.on('click')函数将更改颜色填充。然而,在某个时刻,给用户一个将图形恢复到初始状态的选项是很重要的。我认为对于我的案例来说,直观的方法是单击图形之外的任何位置,即文档体上不在图形坐标平面内的某个位置(边距、填充等) 我试过这个: d3.select('body').on('click', function() { d3.selectAll('circle').style('fill', function(d)

基本上,我有一个图形,用户可以在其中单击不同的SVG形状,通过这样做,
.on('click')
函数将更改颜色填充。然而,在某个时刻,给用户一个将图形恢复到初始状态的选项是很重要的。我认为对于我的案例来说,直观的方法是单击图形之外的任何位置,即文档体上不在图形坐标平面内的某个位置(边距、填充等)

我试过这个:

d3.select('body').on('click', function() {
    d3.selectAll('circle').style('fill', function(d) {
        return d.color;
    })
});
它没有任何效果。我猜我现有的点击效果会覆盖我上面尝试过的
d3.select('body')。on('click')
。要么这样,要么我的方法完全错误

这里有任何建议都很好


我也知道
.attr('fill')
.style('fill')
应该始终保持一致,我确实需要
.style('fill')
。为了安全起见,我尝试了
.attr('fill')

    window.onclick = function(event){
          if(!(event.target.className.baseVal=="circleClass")){
              d3.selectAll('circle').style('fill', function(d) {
        return d.color;
    })
}
    }