2

次のスクリプトを使用しています。

<header>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
</header>

<body>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Header');
    data.addColumn('number', '');
    data.addColumn('number', '');
    data.addRows([
      ['Monday',300,43],
      ['Tuesday',250,545],
      ['Wednesday',122,78],
      ['Thursday',348,92],
      ['Friday',23,61],
      ['Saturday',39,93]
    ]);
    var options = {
      title: '',
      hAxis: {title: '',  titleTextStyle: '#efede9'},
      backgroundColor: '#efede9',
      legend: 'none'
    };
    var chart = new google.visualization.AreaChart(document.getElementById('area_chart_google'));
    chart.draw(data, options);
  }
</script>

<div id="area_chart_google" class="area-chart"></div>
<body>

動的コンテンツを使用しているため、ヘッダー内のスクリプトを使用できません。

最初にページをロードしたとき、およびページを更新した後、それが機能することがわかりました。私の問題は、次のようなonchangeイベントで選択メニューを使用していることです。

<select id="form_frame1" name="frame1" onchange="getChart(this);">
 <option value="area_chart_google" >Area Chart</option>
 <option value="area_chart_2" selected="selected">Stacked Chart</option>
</select>

私のgetChart関数は次のとおりです。

function getChart(selection) {
 if (selection.value == "area_chart_2") {
    document.getElementById('area_chart_2').style.display = 'block';
    document.getElementById('area_chart_google').style.display = 'none';
}

 else {   
    document.getElementById('area_chart_2').style.display = 'none';
    document.getElementById('area_chart_google').style.display = 'block';
   }
}

したがって、area_chart_googleが表示されず(display:none)、それを選択すると、エラーが発生します。

*Firebug* google-visualization-errors-all-1 
*Chrome* Cannot read property 'length' of null
*Safari* 'null' is not an object

getElementByIdがあると思うので、次を使用してみました。

window.onload = function(){ javascript code here }

そしてまた:

$(document).ready(function() {
   javascript code here
});​

何も起こりません。エラーは発生しませんが、チャートが表示されません。

どんな助けでも大歓迎です。

4

3 に答える 3

1

これは私のために働いています:

function getChart(selection) {
  if (selection.value == "area_chart_2") {
  document.getElementById('area_chart_2').style.display = 'block';
  document.getElementById('area_chart_google').style.display = 'none';
}

else {   
  document.getElementById('area_chart_2').style.display = 'none';
  document.getElementById('area_chart_google').style.display = 'block';
  drawChart(); //call this function when using this Google Chart
 }
}
于 2013-03-08T19:41:47.843 に答える
0

最初にGoogleAPIをロードする必要があります。

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

また、スクリプトには適切なタグが必要<body>です。<head>

それ以外の場合、コードは問題ありません。以下は私にとってはうまくいきます:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>
      Google Visualization API Sample
    </title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load('visualization', '1', {packages: ['corechart']});
    </script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Header');
        data.addColumn('number', '');
        data.addColumn('number', '');
        data.addRows([
          ['Monday',300,43],
          ['Tuesday',250,545],
          ['Wednesday',122,78],
          ['Thursday',348,92],
          ['Friday',23,61],
          ['Saturday',39,93]
        ]);
        var options = {
          title: '',
          hAxis: {title: '',  titleTextStyle: '#efede9'},
          backgroundColor: '#efede9',
          legend: 'none'
        };
        var chart = new google.visualization.AreaChart(document.getElementById('area_chart_google'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body> 
    <div id="area_chart_google" class="area-chart"></div>
  </body>
</html>
于 2013-03-07T02:26:26.203 に答える
0

わかりませんが、やってみてください:

google.load("visualization", "1", {packages:["corechart"]});
//..your drawChart() function code here
$(document).ready(function() {
  google.setOnLoadCallback(drawChart);
});

ヘッダーに次のスクリプトがすでに含まれていることを願っています。

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
于 2013-03-07T02:26:47.700 に答える