【问题标题】:How to resolve Uncaught TypeError: object is not a function?如何解决 Uncaught TypeError: object is not a function?
【发布时间】:2014-04-06 23:40:24
【问题描述】:

我的 javascript 代码中出现此错误。当我分别处理图表和地图时,它工作得很好。但是,当我将这两者整合在一起时,它就停止了工作。

<html>
<head>
  <script type='text/javascript' src='https://www.google.com/jsapi'></script>
  <script type='text/javascript'>
   google.load('visualization', '1', {'packages': ['geomap']});
   google.setOnLoadCallback(drawMap);
    var test;

    function drawMap() {
        var test1 = {{pie2008|safe}}
        var test2 = {{pie2009|safe}}
        var test3 = {{pie2010|safe}}

        console.log(test1);
        console.log(test2);
        console.log(test3);
    }

    function drawMap2008() {
        console.log("In draw map function");
        var data = google.visualization.arrayToDataTable({{data2008|safe}});
        var options = {};
        options['region'] = 'US'
        options['dataMode'] = 'regions';
        var container = document.getElementById('map_canvas');
        var geomap = new google.visualization.GeoMap(container);
        console.log(data);
        geomap.draw(data, options);
    }

    function drawMap2009() {
        console.log("In draw map function");
        var data = google.visualization.arrayToDataTable({{data2009|safe}});
        var options = {};
        options['region'] = 'US'
        options['dataMode'] = 'regions';
        var container = document.getElementById('map_canvas');
        var geomap = new google.visualization.GeoMap(container);
        console.log(data);
        geomap.draw(data, options);
    }

    function drawMap2010() {
        console.log("In draw map function");
        var data = google.visualization.arrayToDataTable({{data2010|safe}});
        var options = {};
        options['region'] = 'US'
        options['dataMode'] = 'regions';
        var container = document.getElementById('map_canvas');
        var geomap = new google.visualization.GeoMap(container);
        console.log(data);
        geomap.draw(data, options);
    } 

    function drawChart2008() {
        var data = google.visualization.arrayToDataTable({{pie2008|safe}});
        var options = {
          title: 'Maximum Facebook users for 2008',
          pieHole: 0.4,
        };      
        var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
        chart.draw(data, options);
      }

    function drawChart2009() {
          console.log("In draw map function");
        var data = google.visualization.arrayToDataTable({{pie2009|safe}});
        var options = {
          title: 'Maximum Facebook users for 2009',
          pieHole: 0.4,
        };      
        var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
        chart.draw(data, options);
      }

      function drawChart2010() {
          console.log("In draw map function");
        var data = google.visualization.arrayToDataTable({{pie2010|safe}});
        var options = {
          title: 'Maximum Facebook users for 2010',
          pieHole: 0.4,
        };      
        var container2 = document.getElementById('donutchart');
        var chart = new google.visualization.PieChart(container2);
        chart.draw(data, options);
      }

  </script>
</head>

<body>
  <div id="handb">
    <h3>No of facebook users per state</h3>
    <button id="data2008" onclick = "drawMap2008()">Intensity Map for 2008</button>
    <button id="data2009" onclick = "drawMap2009()">Intensity Map for 2009</button>
    <button id="data2010" onclick = "drawMap2010()">Intensity Map for 2010</button>
    <button id="pie2008" onclick = "drawChart2008()">Pie chart for 2008</button>
    <button id="pie2009" onclick = "drawChart2009()">Pie chart for 2009</button>
    <button id="pie2010" onclick = "drawChart2010()">Pie chart for 2010</button>
  </div>
  <div id='map_canvas'></div>
  <div id='donutchart'></div>
</body>

</html>

我不明白为什么会收到此错误。我在线上的 drawchart2008 函数中收到此错误- var chart = new google.visualization.PieChart(document.getElementById('donutchart')); chart.draw(数据, 选项);

【问题讨论】:

    标签: javascript


    【解决方案1】:

    我怀疑chart.draw(data, options); 实际上不是一个函数(.draw() 不是chart 类型的方法)。
    仅仅因为 .draw() 存在于 geomap.draw(data, options); 并不意味着它存在于 chart

    【讨论】: