Javascript 告诉我一条线是否被隐藏

Javascript 告诉我一条线是否被隐藏,javascript,chart.js,Javascript,Chart.js,我有一张有多条线的图表,每条线都标在它自己的y轴上 我一直在尝试设置它,这样当一条线通过图例隐藏时,它所在的轴也会隐藏。我的计划是向画布添加一个单击侦听器,然后根据行状态禁用或启用所有轴 我的问题是确定线路是否隐藏。只有当数据集中的隐藏值未定义时,dataset.hidden属性似乎才相关。我试图在设置代码时牢记以下几点: ctx.onclick = function(){ var changed = false; for(var j = 0;j < scatterChar

我有一张有多条线的图表,每条线都标在它自己的y轴上

我一直在尝试设置它,这样当一条线通过图例隐藏时,它所在的轴也会隐藏。我的计划是向画布添加一个单击侦听器,然后根据行状态禁用或启用所有轴

我的问题是确定线路是否隐藏。只有当
数据集中的隐藏值未定义时,
dataset.hidden
属性似乎才相关。我试图在设置代码时牢记以下几点:

ctx.onclick = function(){
    var changed = false;
    for(var j = 0;j < scatterChart.options.scales.yAxes.length;j++){
        var oldVal = scatterChart.options.scales.yAxes[j].display;
        var hidden = false;
        var isHiddenDataSet = scatterChart.data.datasets[j].hidden;

        if(isHiddenDataSet){
            hidden = true;
        }

        var isHiddenMeta = scatterChart.data.datasets[j]._meta[0].hidden;
        if(isHiddenMeta != null){
            hidden = isHiddenMeta;
        }

        scatterChart.options.scales.yAxes[j].display = !hidden;
        changed = changed || oldVal == scatterChart.options.scales.yAxes[j].display;
    }
    if(changed){
        scatterChart.update();
    }
}
ctx.onclick=function(){
var=false;
对于(var j=0;j
这段代码适用于我的原始测试,该测试只有一个图表,但当
\u meta
中数据对象的索引从一个图表更改为另一个图表时,如果页面上有多个图表,则会失败

有没有办法确定数据集是否隐藏?

因为它适合您,所以我将其设置为答案

数据集中的
\u meta
属性非常有用,特别是在搜索特定属性时,例如
隐藏的

然而,当同一页上有多个图表时,很难处理它

执行以下操作时:

var isHiddenMeta=scatterChart.data.datasets[j]。\u meta[0]。隐藏;
0
索引实际上是代码中调用的第一个图表(索引
1
是第二个图表,以此类推)
因此,您将获得第一张图表的信息,而不是您刚才单击的图表


要解决此问题,您需要使用与数据集信息相结合的方法,如下所示:

var isHiddenMeta=scatterChart.data.datasets[j]。_meta[Object.keys(scatterChart.data.datasets[j]。_meta)[0]]隐藏;

这将获得真实图表数据集的
隐藏属性。

\u meta
在处理多个图表时不起作用。您是否可以尝试将
\u meta[0]
替换为
\u meta[Object.keys(scatterChart.data.datasets[j].\u meta)[0]
?@tektiv以完成任务。我想有一些反思性的答案,但不知道怎么做。