【发布时间】:2015-04-24 06:26:29
【问题描述】:
我正在使用 jquery HighCharts。我想创建一个通用函数来开发多个相同类型的图表。 为了实现这个目标,我创建了一个如下函数 -
function generateGraph(data) {
var dates = new Array();
var startDate = "";
for (var i = 0; i < data.length; i++) {
dates[i] = data[i].date;
}
var productInsight = _comm.getProductInsightArray();
var productInsight_Array = new Array();
$.each(productInsight, function(key, value) {
productInsight_Array.push(key);
});
if(dates.length > 0) {
startDate = dates[0].split("/");
}
intervals = 24 *3600 * 1000; //one day
var title = $("#DateSearch_analytics_Similar_Stores1").val();
var color = ['#000000', '#FFFFFF', '#000080', '#0000FF', '#808080'];
var containers =['container1', 'container2','container3','container4', 'container5', 'container6', 'container7', 'container8', 'container9'];
for(var j=0; j<containers.length; j++)
{
var chart = new Highcharts.Chart({
chart: {
zoomType: 'x',
renderTo: containers[j],
type: 'line',
},
title: {
text: title
},
subtitle: {
text: document.ontouchstart === undefined ?
'Click and drag in the plot area to zoom in' :
'Pinch the chart to zoom in'
},
xAxis: {
type: 'datetime',
tickInterval: intervals,
},
series: []
});
for(var i=0; i < productInsight_Array.length; i++) {
var fillData = new Array();
var counter = 0;
var productValue = document.getElementById('product-nm').value;
$.each(dates, function() {
fillData[counter] = _comm.randomNumberFromRange(_randomNumberStartRange, _randomNumberEndRange);
counter++;
});
chart.addSeries({
name: productInsight_Array[i],
type: 'line',
color: color[i],
pointStart: Date.UTC(startDate[2], startDate[0] - 1, startDate[1]),
pointInterval: intervals,
data: fillData,
});
}
$("text:contains('Highcharts.com')").css("display", "none");
}
}
它工作正常,并在窗口加载和按钮单击上开发图表。我将这些图表保存在 9 个容器中,但是这个脚本没有在第 3 个容器中加载图表,当我删除第 3 个容器时,它没有在第四个容器中加载,依此类推。但是当我在按钮单击而不是文档加载时调用此函数时,它工作正常。
我有点惊讶它为什么会发生,作为创建所有图表的常用函数。
我需要你的帮助! :(
谢谢
【问题讨论】:
-
展示你如何使用
generateGraph函数。 -
没有抛出异常吗?
-
请发一个 JSFiddle,否则很难猜出到底是什么失败了……
标签: javascript jquery highcharts