highcharts 为最后选定的图表启用X轴标签

pftdvrlh  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(182)

所有3个图表都有共同的X轴。希望只为最后选定的图表显示X轴标签。我不知道要选择多少个图表。因此这必须是动态的。
我试了试下面:我最初禁用了所有图表的X轴标签。只需要为最后一个选定的图表启用X轴标签(最底部的图表)。

document.querySelectorAll('#checkboxes input').forEach(function(checkbox) {
 checkbox.addEventListener('change', (e) => {
 const id = e.target.dataset.id,
 checked = e.target.checked,
 checkedCheckboxes = document.querySelectorAll('#checkboxes input:checked').length,
 node = document.querySelector(`#chart${id}`);

 const chartEps = [
    chartEp1,
    chartEp2,
    chartEp3,
  ] 
  console.log("id", id)   
  //chartEps[id].xAxis[0].options.labels.enabled = true

  // The ID has to be the id of last chart selected. So that only for last chart xAxis label is enabled.   
  chartEps[id].update({ 
  labels: {
     enabled: true
 },
 });

请看提琴:https://jsfiddle.net/xhLt6a01/8/
除了动态x轴标签,我还尝试设置一个空的图表,它的x轴需要在底部随时显示(在fiddle底部的注解代码)。
但不能让两个选择工作。我真的很感激如果我能得到任何帮助。

83qze16e

83qze16e1#

要动态启用/禁用标签,请在更新调用中设置选项xAxis,但(不知何故意外地)它应该位于选项对象的顶级,与chart处于同一级别:

Highcharts.charts.forEach(function(chart, i) {
  chart.update({
     chart: {
        height: height / checkedCheckboxes
     },
     xAxis:{
        labels: {
           enabled: ...your boolean criterion here for chart i... 
        }
     }
  });
});

对于只为最后显示的图表启用坐标轴的特定情况,我将使用

{enabled: selected[i] && selected.indexOf(true, i+1) === -1}

其中selected是一个跟踪选中复选框的数组,它相当于显示的图表。

相关问题