Javascript Hichcharts-隐藏序列在更新绘图两次后不会再次显示

Javascript Hichcharts-隐藏序列在更新绘图两次后不会再次显示,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我做过类似的事情: 使用复选框更改绘图数据 选中/取消选中该复选框后,通过调用series[i]。相应地更新series数据数组。 但我有一个问题,当一个系列被用户隐藏,并尝试选中复选框,然后取消选中,然后重新显示该系列,该系列不会再次显示 请注意,如果我只勾选一次框,则不会出现问题,只有在隐藏序列后多次勾选框时才会出现问题 我已经解决了这个问题 更新绘图的代码为: if (chart) { for (var i = 0; i < chart.series.length; i++)

我做过类似的事情:

使用复选框更改绘图数据 选中/取消选中该复选框后,通过调用series[i]。相应地更新series数据数组。 但我有一个问题,当一个系列被用户隐藏,并尝试选中复选框,然后取消选中,然后重新显示该系列,该系列不会再次显示

请注意,如果我只勾选一次框,则不会出现问题,只有在隐藏序列后多次勾选框时才会出现问题

我已经解决了这个问题

更新绘图的代码为:

if (chart) {
    for (var i = 0; i < chart.series.length; i++) {
        //chart.series[i].setVisible(true, true); // Note that if I add this code, then no problem 
        chart.series[i].update({
            data: dataArray[i]
        });
    }
}

问题是,您基于Highcharts生成的点。隐藏序列时,点不存在,并且为序列设置空数据。换句话说,它看起来是这样的:chart.series[i].setData[]

我建议对数据使用单独的数组,并将其用于计算。总体思路:我知道,它的工作原理有点不同,但说明了应该如何编写

var origData = [
    [11, 22, 33, 44, 55, 66, 77, 88],
    [10, 20, 30, 40, 50, 60, 70, 80]
];
$('#container').highcharts({
    series: [{
        data: origData[0].slice()
    }, {
        data: origData[1].slice()
    }]
});
后来:

        for (var i = 0; i < origData.length; i++) {        // original data
            var onePlotData = [];
            var sum = 0; //前面点的合计值s
            for (var j = 0; j < origData[i].length; j++) { // original data
                var value = origData[i][j];                // original data
                var point = {
                    //x: value.x,
                    y: state ? value + sum : value - sum,
                    //total: value.total
                }
                sum = point.y;
                onePlotData.push(point);
            }
            dataArray.push(onePlotData);
        }

为什么只有第二次,序列数据变为空?在我的实际函数中,我不能在该函数范围内拥有原始数据,我有办法获取所有数据,包括隐藏数据吗?为什么可以拥有原始数据?只需将该数据存储在局部范围变量中。很难说为什么你需要点击两次这个复选框。是的,我建议存储所有数据,包括隐藏的数据。1.我的意思是,我不能在本地函数中保存原始数据,数据会在其他地方提取,也会在图表渲染中提取。因此,如果可能的话,我希望有基于highcharts对象的数据。2.用户可能会选中该框以查看结果,然后更改为取消选中。很抱歉,我遗漏了一些可能非常重要的内容。创建图表时,您可以访问原始数据,对吗?否则您将无法创建图表。。现在把数据存储在某个地方。例如,使用图表:第17行和第33行