Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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_Css_D3.js - Fatal编程技术网

Javascript 一次触发多个按钮和行D3.js

Javascript 一次触发多个按钮和行D3.js,javascript,css,d3.js,Javascript,Css,D3.js,我有一组按钮,它们都具有相同的类,并由D3js附加到图表区域。在4个类别中有20个按钮:可见、JS、CSS、文本区域。我想做的是:按下类别中的任何一个按钮来切换类别中的所有按钮,如图所示。整个类别的行(5行)也应切换 图表的代码可在代码笔中找到: 对于我的按钮: issue.append("rect") .attr("width", 10) .attr("height", 10) .a

我有一组按钮,它们都具有相同的类,并由D3js附加到图表区域。在4个类别中有20个按钮:可见、JS、CSS、文本区域。我想做的是:按下类别中的任何一个按钮来切换类别中的所有按钮,如图所示。整个类别的行(5行)也应切换

图表的代码可在代码笔中找到:

对于我的按钮:

 issue.append("rect")
      .attr("width", 10)
      .attr("height", 10)                                    
      .attr("x", width + (margin.right/3) - 15) 
      .attr("y", function (d, i) { return (legendSpace)+i*(legendSpace) - 8; })  // spacing
      .attr("fill",function(d) {
        return d.visible ? color(d.name) : "#F1F1F2"; // If array key "visible" = true then color rect, if not then make it grey 
      })
      .attr("class", "legend-box")

      .on("click", function(d){ // On click make d.visible 
        d.visible = !d.visible; // If array key for this data selection is "visible" = true then make it false, if false then make it true

        maxY = findMaxY(categories); // Find max Y rating value categories data with "visible"; true
        yScale.domain([0,maxY]); // Redefine yAxis domain based on highest y value of categories data with "visible"; true
        svg.select(".y.axis")
          .transition()
          .call(yAxis);   

        issue.select("path")
          .transition()
          .attr("d", function(d){
            return d.visible ? line(d.values) : null; // If d.visible is true then draw line for this d selection
          })

在单击功能的内部,在所有行上设置可见标志:

  .on("click", function(d){ // On click make d.visible 
    // visible is true if the start of the name matches        
    categories.forEach(function(e){
      e.visible = e.name.slice(0, 5) == d.name.slice(0, 5)
    })

要一次打开多个分区,请仅翻转匹配类别的可见标志:

  .on("click", function(d){
    categories.forEach(function(e){
      e.visible = e.name.slice(0, 5) == d.name.slice(0, 5) ? !e.visible : e.visible
    })

在单击功能的内部,在所有行上设置可见标志:

  .on("click", function(d){ // On click make d.visible 
    // visible is true if the start of the name matches        
    categories.forEach(function(e){
      e.visible = e.name.slice(0, 5) == d.name.slice(0, 5)
    })

要一次打开多个分区,请仅翻转匹配类别的可见标志:

  .on("click", function(d){
    categories.forEach(function(e){
      e.visible = e.name.slice(0, 5) == d.name.slice(0, 5) ? !e.visible : e.visible
    })

你想要的只是视觉效果,对吗?不,对不起,不清楚。我还需要在图表上切换行。嗯,仅仅一个问题就需要编写大量代码,特别是在没有工作代码的情况下。对不起,我出去了。@GerardoFurtado我添加了代码。谢谢。你介意建议一个替代方案吗?你只想要视觉效果,对吗?不,对不起,不清楚。我还需要在图表上切换行。嗯,仅仅一个问题就需要编写大量代码,特别是在没有工作代码的情况下。对不起,我出去了。@GerardoFurtado我添加了代码。谢谢。你介意提出一个替代方案吗?谢谢,这确实解决了这个问题。问题:我如何同时打开两个部分?谢谢,这确实解决了这个问题。问题:如何同时打开两个部分?