score:1

Accepted answer

you can change your onclick function as follows:

document.getelementbyid("mychart").onclick = function(evt) {
  const datasetindex = mychart.getelementatevent(event)[0]._datasetindex;
  if (datasetindex >= 0) {
    ...
    alert(mychart.data.datasets[datasetindex].label + '\n' + label + ": " + value);
  }
};

please take a look at your amended code and see how it works.

var ctx = document.getelementbyid("mychart").getcontext('2d');
var mychart = new chart(ctx, {
  type: 'line',
  data: {
    labels: ["red", "blue", "yellow", "green", "purple", "orange"],
    datasets: [{
        label: 'timmy',
        data: [12, 19, 3, 5, 2, 3],
        backgroundcolor: [
          'rgba(255, 99, 132, 0.2)',
          'rgba(54, 162, 235, 0.2)',
          'rgba(255, 206, 86, 0.2)',
          'rgba(75, 192, 192, 0.2)',
          'rgba(153, 102, 255, 0.2)',
          'rgba(255, 159, 64, 0.2)'
        ],
        bordercolor: [
          'rgba(255,99,132,1)',
          'rgba(54, 162, 235, 1)',
          'rgba(255, 206, 86, 1)',
          'rgba(75, 192, 192, 1)',
          'rgba(153, 102, 255, 1)',
          'rgba(255, 159, 64, 1)'
        ],
        borderwidth: 1
      },
      {
        label: 'siri',
        data: [24, 38, 6, 10, 4, 6],
        backgroundcolor: [
          'rgba(255, 99, 132, 0.2)',
          'rgba(54, 162, 235, 0.2)',
          'rgba(255, 206, 86, 0.2)',
          'rgba(75, 192, 192, 0.2)',
          'rgba(153, 102, 255, 0.2)',
          'rgba(255, 159, 64, 0.2)'
        ],
        bordercolor: [
          'rgba(255,99,132,1)',
          'rgba(54, 162, 235, 1)',
          'rgba(255, 206, 86, 1)',
          'rgba(75, 192, 192, 1)',
          'rgba(153, 102, 255, 1)',
          'rgba(255, 159, 64, 1)'
        ],
        borderwidth: 1
      },
    ]
  },
  options: {
    scales: {
      yaxes: [{
        ticks: {
          beginatzero: true
        }
      }]
    }
  },
});

document.getelementbyid("mychart").onclick = function(evt) {
  const datasetindex = mychart.getelementatevent(event)[0]._datasetindex;
  if (datasetindex >= 0) {
    var activepoints = mychart.getelementsateventformode(evt, 'point', mychart.options);
    var firstpoint = activepoints[0];
    var label = mychart.data.labels[firstpoint._index];
    var value = mychart.data.datasets[firstpoint._datasetindex].data[firstpoint._index];
    alert(mychart.data.datasets[datasetindex].label + '\n' + label + ": " + value);
  }
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/chart.js/2.9.4/chart.min.js"></script>
<canvas id="mychart"></canvas>


Related Query

More Query from same tag