Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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.js单击可替换颜色,单击另一个点可更改回原始颜色_Javascript_D3.js - Fatal编程技术网

Javascript d3.js单击可替换颜色,单击另一个点可更改回原始颜色

Javascript d3.js单击可替换颜色,单击另一个点可更改回原始颜色,javascript,d3.js,Javascript,D3.js,我正在使用d3中的散点图,图上的每个点代表一张纸 图表上的所有点都是蓝色的,但单击“我希望所选纸张改变颜色”(例如黄色)。但当点击另一个点时,我希望第一个点变回蓝色,新选择的点变为黄色。我将如何实现这一点?我有一个名为clickHandler的函数,在单击属性创建圆时调用该函数 这里有一个类似的问题 但是,我不希望在第二次单击该圆时,该圆返回到原始颜色,而是希望在单击另一个圆时,该圆返回到原始颜色 下面的代码来自上面链接的问题,我想知道我是否在正确的轨道上,认为这是我应该为我想要的东西遵循的方法

我正在使用d3中的散点图,图上的每个点代表一张纸

图表上的所有点都是蓝色的,但单击“我希望所选纸张改变颜色”(例如黄色)。但当点击另一个点时,我希望第一个点变回蓝色,新选择的点变为黄色。我将如何实现这一点?我有一个名为clickHandler的函数,在单击属性创建圆时调用该函数

这里有一个类似的问题

但是,我不希望在第二次单击该圆时,该圆返回到原始颜色,而是希望在单击另一个圆时,该圆返回到原始颜色

下面的代码来自上面链接的问题,我想知道我是否在正确的轨道上,认为这是我应该为我想要的东西遵循的方法

function clickHandler (d, i) {

var toggleColor = (function() {

        var currentColor = "blue";
            return function() {
                currentColor = currentColor == "blue" ? "yellow" : "blue";
                d3.select(this).style("fill", currentColor)
                                .style("stroke", "black");
            }
    })
}

非常感谢您的帮助!提前谢谢

这可以简单到:

function clickHandler (d, i) {
  // reset all circle to blue
  d3.selectAll('circle') //<-- or slap a class name on your circles and use that
    .style('fill', 'blue');

  // set selected one to yellow
  d3.select(this)
    .style('fill', 'yellow');
}
函数clickHandler(d,i){
//将所有圆圈重置为蓝色
d3.选择全部('圆圈')//