【问题标题】:Jquery Highcharts is not loading when using with common function?与常用功能一起使用时未加载 Jquery Highcharts?
【发布时间】: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


【解决方案1】:

问题是当加载你的标记不存在的函数时。因此,当您单击按钮时可以正常工作。当按钮可见时,所有标记都已加载。

查看您的加载顺序。

另外注释:把它放在你的图表声明中:

credits: {
   enabled: false
}

不显示积分消息:“Highcharts.com”。 An example

【讨论】:

  • 你能解释一下为什么它没有具体加载到第三个容器中吗?
  • 为了重现行为,解决确切问题可能会有所帮助。
  • 同意。但我不是 OP,我只是在问问题。
  • 我已经尝试过 credits: false in like this chart.addSeries({ name: productInsight_Array[i], type: 'line', color: color[i], pointStart: Date.UTC( startDate[2], startDate[0] - 1, startDate[1]), pointInterval: 间隔, data: fillData, credits: false, });我也尝试过使用这里的图表:{ zoomType:'x',renderTo:containers[j],type:'line',credits:false,},但它仍然没有在加载时加载
  • 积分应该在全局选项 json 中,而不是在图表对象中。 Example
猜你喜欢
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
相关资源
最近更新 更多