ChartJS 单击栏并更改其背景颜色

Chr*_*ian 5 javascript chart.js

我正在使用 Chartjs 绘制一个简单的条形图。条形图是可单击的,我会注意到用户是否单击条形图。现在我想更改已单击的栏的背景以指示该栏已被主动选择。

这可能吗?

谢谢

编辑:我添加了一个小例子。 https://jsfiddle.net/10n39cLz/1/ 单击的元素将使用以下方式收集:this.getElementAtEvent(e)

Chr*_*ian 7

我找到了一个非常优雅的解决方案,只需修改数组中保存的背景颜色即可。遗憾的是 render() 还不够,因此我需要执行 update() ..

顺便希望我能使用 ES6 :-)

var backgroundColor = ['rgb(124, 181, 236)',
    'rgb(124, 181, 236)',
    'rgb(124, 181, 236)',
    'rgb(124, 181, 236)',
    'rgb(124, 181, 236)',
    'rgb(124, 181, 236)'];

var a = new Chart(document.getElementById("trendChart"), {
  type: 'bar',
  data: {
    labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
    datasets: [{
      label: '# of Votes',
      data: [12, 19, 3, 5, 2, 3],
      backgroundColor: backgroundColor
    }]      
  },
  options:{
    onClick: function(e){
    var element = this.getElementAtEvent(e);
            for(var i=0;i<backgroundColor.length;i++){
        backgroundColor[i] = 'rgb(124, 181, 236)';
    }
         backgroundColor[element[0]._index] = 'red';
      this.update()
    },
           scales: {
        yAxes: [{
            ticks: {
            fontColor:'#fff'
           }
        }],
                    xAxes: [{
            ticks: {
            fontColor:'#fff'
          }
         }],                    
     },
   legend:{
      display:false
    }
  }
})
Run Code Online (Sandbox Code Playgroud)