Google可视化addListener调用函数引用错误

Google visualization addListener called function reference error

本文关键字:引用 错误 函数 调用 可视化 addListener Google      更新时间:2023-09-26

我正试图处理图表的选择事件,我想知道选择了哪一行/哪一列,但被调用的函数出现错误:

未捕获引用错误:未定义图表。

该代码与饼图和选择事件处理程序示例中的代码非常相似。我希望我需要让图表对象在全球范围内为人所知,但不确定如何做到这一点。

<html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Task', 'Hours per Day'],
          ['Work',     11],
          ['Eat',      2],
          ['Sleep',    12]
        ]);
        var options = { title: 'My Daily Activities' };
        var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
        chart.draw(data, options);
        google.visualization.events.addListener(chart, 'select', selectHandler);
      }
      function selectHandler() {
          var selection = visualization.getSelection();
          alert("it");
      }

    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>

您解决过这个问题吗?如果不是。。。

google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
//declare your variables in the global scope
var chart, data;
function drawChart() {
    data = google.visualization.arrayToDataTable([
        ['Task', 'Hours per Day'],
        ['Work',     11],
        ['Eat',      2],
        ['Sleep',    12]
    ]);
    var options = { title: 'My Daily Activities' };
    chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(data, options);
    google.visualization.events.addListener(chart, 'select', selectHandler);
}
function selectHandler() {
    //"visualization.getSelection();" dos not exist
    //access the global variable chart and its current selection
    var selection = chart.getSelection();
    alert(data.getValue(selection[0].row, 1));
}

警报11、2或12。

参见fiddle->http://jsfiddle.net/7e6Va/