Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新在Invisible HighCharts系列问题上更改的数据点_Javascript_Jquery_Highcharts - Fatal编程技术网

Javascript 更新在Invisible HighCharts系列问题上更改的数据点

Javascript 更新在Invisible HighCharts系列问题上更改的数据点,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我使用HighCharts来显示包含直线图和条形图的图形。默认情况下,在单击系列标题之前,条形图系列不可见。我有代码可以动态更新条形图,但我注意到,当图表不可见时,我无法获取现有信息 当我从服务器获取数据时,我会尝试更新任何现有点,如果我们有新点,则添加新点。如果序列可见,此代码非常有效,但如果序列不可见,则chart.series[1].data[idx]返回undefined。单击该系列将显示图表,因此我知道数据在某个地方。我做错了什么 if (chart.series[1].data[id

我使用HighCharts来显示包含直线图和条形图的图形。默认情况下,在单击系列标题之前,条形图系列不可见。我有代码可以动态更新条形图,但我注意到,当图表不可见时,我无法获取现有信息

当我从服务器获取数据时,我会尝试更新任何现有点,如果我们有新点,则添加新点。如果序列可见,此代码非常有效,但如果序列不可见,则
chart.series[1].data[idx]
返回
undefined
。单击该系列将显示图表,因此我知道数据在某个地方。我做错了什么

if (chart.series[1].data[idx] && chart.series[1].data[idx].y != inRate)
{   
    chart.series[1].data[idx].update(inRate);
    redraw = true;
}
else if (!chart.series[1].data[idx])
{
    var time = IntervalToTime(i, doorInterval);
    chart.series[1].addPoint([time, inRate], false, false);
    redraw = true;
}

经过一些调查,我取得了一些进展。显然,直到序列至少出现一次,数据数组才被填充,因此您无法检查数据是否存在。我发现一个已处理的数据队列,其中保存着数据,该队列似乎正常工作,但在尝试调用
chart.series[1].data[idx].update(inRate)


经过调查,我发现了这个问题。显然,
数据
数组在序列至少出现一次后才会填充,因此无法检查其中是否存在数据。我发现了一个处理过的数据队列,其中保存着数据,这似乎是可行的

if (chart.series[1].processedXData[idx] && chart.series[1].processedYData[idx] != inRate)
{
    chart.series[1].data[idx].update(inRate);
    redraw = true;
}
else if (!chart.series[1].processedXData[idx])
{
    var time = IntervalToTime(i, doorInterval);
    chart.series[1].addPoint([time, inRate], false, false);
    redraw = true;
}

由于性能原因,仅更新可见点/序列,如果确实需要更新某些内容,请尝试直接在
series.options.data
中更新点(覆盖该数组中的值)。此外,任何类型的jsFiddle都是值得赞赏的。快速问题,如果您能重新思考,问题中的
inRate
代表什么?此外,该代码是否放置在数据点的循环中?Hi
inRate
基本上是我的
Y
值,图表测量的是流量或速率。是的,这是在一个for循环中。谢谢,在一个图表中有一些奇怪的问题,它呈现数据,然后你将数据集交换到一个空数据集,它什么也不呈现,这是我所期望的。但当我切换回原始数据集时,图表呈现为空。你的问题是我到目前为止研究过的众多问题中的一个。你称之为重画吗?(只是一个想法)
if (chart.series[1].processedXData[idx] && chart.series[1].processedYData[idx] != inRate)
{
    chart.series[1].data[idx].update(inRate);
    redraw = true;
}
else if (!chart.series[1].processedXData[idx])
{
    var time = IntervalToTime(i, doorInterval);
    chart.series[1].addPoint([time, inRate], false, false);
    redraw = true;
}