【问题标题】:Changing value of global javascript variable更改全局 javascript 变量的值
【发布时间】:2010-07-22 05:34:01
【问题描述】:

我正在尝试更改 javascript 函数内的全局变量的值,但是,该值似乎没有被采用,我不知道为什么。 (诚​​然,我不是一个经验丰富的 javascript 人。)这是我的代码:

var title_chart = "";

google.load("visualization", "1", {packages:["corechart"]});

google.setOnLoadCallback(drawChart);

function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Country');
  data.addColumn('number', 'Number of Entries');

  jQuery.getJSON('/data/stats.json', function(chart_data) {
    title_chart = chart_data.chart_title;
    jQuery.each(chart_data.stats, function(index, value){
      data.addRows(1);
      data.setValue(index, 0, value.chart_label);
    });
  });

  var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  chart.draw(data, {width: 450, height: 300, title: title_chart});

}

谢谢!

【问题讨论】:

标签: javascript jquery google-visualization


【解决方案1】:

getJSON 是异步的。改为这样做:

jQuery.getJSON('/data/stats.json', function(chart_data) {
  var title_chart = chart_data.chart_title;
  jQuery.each(chart_data.stats, function(index, value){
    data.addRows(1);
    data.setValue(index, 0, value.chart_label);
  });

  var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  chart.draw(data, {width: 450, height: 300, title: title_chart});
});

问题是getJSON 立即返回。只有稍后,当请求完成时,才会调用您的回调。与此同时,chart.draw 可能已经运行。通过将此代码移动到回调函数中,我们确保它在正确的时间运行。另请注意,我们可以消除全局。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多