Javascript 更改图表类型给定:未捕获类型错误:无法读取属性';长度';未定义海图的定义
我最初在烛台模式下加载图表 然后单击一个按钮,将其更改为行模式 烛台和折线图数据都有不同的数据点Javascript 更改图表类型给定:未捕获类型错误:无法读取属性';长度';未定义海图的定义,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我最初在烛台模式下加载图表 然后单击一个按钮,将其更改为行模式 烛台和折线图数据都有不同的数据点 candlestick = [[datetime, open, high, low, close], ....] line = [[datetime, close], ....] 按一下按钮 if (requiredType == "candlestick") { chart.series[seriesindex].update({ type: "c
candlestick = [[datetime, open, high, low, close], ....]
line = [[datetime, close], ....]
按一下按钮
if (requiredType == "candlestick") {
chart.series[seriesindex].update({
type: "candlestick",
keys: ['x', 'open', 'high', 'low', 'close'],
data: candlestick,
}, true);
} else if (requiredType == "line") {
chart.series[seriesindex].update({
type: "line",
keys: ['x', 'y'],
data: line,
}, true);
}
最初,图表以烛台模式加载。
单击“更改类型”按钮失败,并出现以下错误
Uncaught TypeError: Cannot read property 'length' of undefined
at Object.high (highstock.src.js:47746)
at v.ohlc (highstock.src.js:47764)
at v.l (highstock.src.js:47865)
at v.t.processData (highstock.src.js:48205)
at v.F.processData (highstock.src.js:53103)
at highstock.src.js:16601
at Array.forEach (<anonymous>)
at G.setTickInterval (highstock.src.js:16600)
at G.setScale (highstock.src.js:16936)
at highstock.src.js:24043
high @ highstock.src.js:47746
ohlc @ highstock.src.js:47764
l @ highstock.src.js:47865
t.processData @ highstock.src.js:48205
F.processData @ highstock.src.js:53103
(anonymous) @ highstock.src.js:16601
setTickInterval @ highstock.src.js:16600
setScale @ highstock.src.js:16936
(anonymous) @ highstock.src.js:24043
redraw @ highstock.src.js:24041
update @ highstock.src.js:34110
toggleChart @ fno.js:336
(anonymous) @ fno.js:907
dispatch @ jquery.js:4435
r.handle @ jquery.js:4121
Uncaught TypeError:无法读取未定义的属性'length'
at Object.high(highstock.src.js:47746)
在v.ohlc(highstock.src.js:47764)
在v.l(highstock.src.js:47865)
at v.t.processData(highstock.src.js:48205)
在v.F.processData(highstock.src.js:53103)
在highstock.src.js:16601
在Array.forEach()处
在G.setTickInterval(highstock.src.js:16600)
在G.setScale下(highstock.src.js:16936)
在highstock.src.js:24043
high@highstock.src.js:47746
ohlc@highstock.src.js:47764
l@highstock.src.js:47865
t、 processData@highstock.src.js:48205
F.processData@highstock.src.js:53103
(匿名)@highstock.src.js:16601
setTickInterval@highstock.src.js:16600
highstock.src.js处的设置刻度:16936
(匿名)@highstock.src.js:24043
重画@highstock.src.js:24041
更新@highstock.src.js:34110
toggleChart@fno.js:336
(匿名)@fno.js:907
dispatch@jquery.js:4435
r、 handle@jquery.js:4121
但是,如果最初我以直线模式加载图表,然后切换到烛台模式,那么它不会失败,而是让图表空着,而不绘制任何图形
另外,如果我在图表上只有很少的点,比如说10点,图表处于烛台模式,我把它切换到直线模式,那么它工作得很好,但是如果有更多的数据,比如说超过500点,它就不工作了 您还需要更新
近似值
,对于行
系列,该近似值默认设置为平均值
,对于ohlc
系列,该近似值默认设置为平均值
$('#line').on('click', function() {
chart.series[0].update({
type: 'line',
dataGrouping: {
approximation: 'average'
},
keys: ['x', 'y'],
data: line
});
});
$('#candlestick').on('click', function() {
chart.series[0].update({
type: 'candlestick',
dataGrouping: {
approximation: 'ohlc'
},
keys: ['x', 'open', 'high', 'low', 'close'],
data: candlestick
});
});
现场演示:
API参考:Hi@maharshi,我试图重现这个问题,但似乎一切都正常:您能调整该示例以显示问题吗?Hi@ppotaczek I对于相同的代码,将数据增加到500,然后单击All。它不起作用。(也编辑了我的问题,从150到500)