在函数之间共享变量

时间:2013-06-05 07:18:24

标签: javascript highcharts

我很难尝试在javascript函数之间共享变量。

我基本上有一个具有3个函数的对象:一个用于获取数据,一个用于渲染图表,第三个用于操作图表本身。

我的代码看起来像

 this.ChartManager = {
      plotChart: function(chartName) {
       ...
       ChartManager.createChart(seriesOptions);
      },

    createChart: function(seriesOptions) {
      var chart = $('#container').highcharts('StockChart', {
       ...
      });
    },

    toggleSeries: function(n) {
      current_series = chart.series[n];
      ...
    }
 };

但是当我在ToggleSeries中尝试访问图表变量时,我收到一条“未定义”错误消息。

如何从ToggleSeries中访问图表变量?

感谢您的帮助,祝您度过愉快的一天。

更新 - 我的工作代码是

this.ChartManager = {
      plotChart: function(chartName) {
       ...
       ChartManager.createChart(seriesOptions);
      },

    createChart: function(seriesOptions) {
       $('#container').highcharts('StockChart', {
       ...
      });
    },

    toggleSeries: function(n) {
    var current_series = $('#container').highcharts().series[n];
      ...
    }
 };

2 个答案:

答案 0 :(得分:1)

在对象中定义变量,并在任何成员函数中使用它们。

 this.ChartManager = {
    globalVar1:0,
    chart:0,
    plotChart: function(chartName) {
       ...
       ChartManager.createChart(seriesOptions);
      },

    createChart: function(seriesOptions) {
      this.chart = $('#container').highcharts('StockChart', {
       ...
      });
    },

    toggleSeries: function(n) {
      current_series = this.chart.series[n];
      ...
    }
 };

答案 1 :(得分:0)

你不能 - 在函数内部定义的变量保留在该函数的范围内。您必须将该变量移动到全局范围中,或将其附加到可从当前范围访问的对象。