我想調用一個包含構建Highcharts圖表的代碼的函數,但是我正在拋出錯誤。在函數內調用Highcharts
TypeError: $(...).highcharts is not a function
data: (function() {
我已經確保highcharts.js在我試圖構建圖表之前被調用。
如果我刪除該函數,並將其作爲正常的代碼存放在該代碼中,那麼該圖表會生成良好的圖表,但我希望圖表上的數據沒有時間被提取,因此未加載到圖表中。因此,我正在使用setTimeout()等待在加載圖表之前獲取數據,但圖表現在不加載。
webiopi().callMacro("getTempHist", [], arrayTemp);
function arrayTemp(macro, args, data) {
testlist = data.split(" ");
$(document).ready(function() {
Highcharts.setOptions({
global: {
useUTC: false
}
});
var chart;
$('#temptracker').highcharts({
chart: {
type: 'line',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
events: {
load: function() {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Number(temp0);
series.addPoint([x, y], true, true);
}, 60000);
}
}
},
title: {
text: 'Live Temperature'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 100
},
yAxis: {
title: {
text: 'Temperature'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}],
min: -10,
max: 45,
startOnTick: false
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%d-%m-%Y %H:%M', this.x) +'<br/>'+
'<b>' + Highcharts.numberFormat(this.y, 2) + '°C' + '</b>';
}
},
legend: {
enabled: false
},
exporting: {
enabled: false
},
series: [{
name: 'Temperature',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = 0; i <= 19; i++) {
data.push({
x: time + ((i-19) * 1000),
y: Number(testlist[i])
});
}
return data;
})()
}]
});
});
}
任何幫助,將不勝感激
你能提供完整的代碼嗎?我認爲你應該在回調數據的地方創建圖表。 –
對我來說它工作正常,http://jsfiddle.net/8hMze/1/(我建議刪除雙重document.ready) –
我已編輯的問題,包括完整的代碼。我做了Pawel的建議,並在回調中創建了圖表,但我仍然被拋出了相同的錯誤。 – benandrews54