30

私は自分の問題を解決しましたが、このサイトに慣れていないため、自分で答えることはできません:

以下を使用する必要があることがわかりました。

chart = new google.visualization.PieChart(document.getElementById('pie_today_div'));

私は要素にアクセスするためにJQueryを使用していました $('#pie_today_div'). 現在のところ、証拠は、PieChart コンストラクターが標準の JS コードを持っている必要があるという事実を示しています。document.getElementById('pie_today_div')

他の何かが起こっているのかもしれませんが、コンテナ要素へのアクセス方法を変更すると、コードが修正されます

私のソリューションを参照するための元の問題

Google PieChart オブジェクトをインスタンス化しようとすると、「コンテナが定義されていません」というエラーが表示されます。

http://validator.w3.org/で自分のページを検証したところ、検証済みであることを示すきれいな緑色のバナーが表示されました。

ページの読み込み時に js エラーが発生しません。私の Ajax 呼び出しは、DB から必要なデータを完全に往復しています。

ここに私のHTMLがあります

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <link href="/css/note.css?10022012" rel="stylesheet" type="text/css" media="screen">
        <script type="text/javascript" language="javascript" src="/call/js/jquery-1.7.2.min.js"></script>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">google.load('visualization', '1.0', {'packages':['corechart']});</script>
        <script type="text/javascript" language="javascript" src="/call/js/init.js?10042012-2"></script>
        <title>Call Stats</title>
    </head>
    <body>
        <a href="#" id="pie_today_link">Today Stats</a>
        <div id="pie_today_div"></div>
    </body>
</html>

ここにjsがあります:

function drawPieChartToday() {

    $.post('/call/ajax.php5',{
        action:'pieToday'
    }, function(ticketData) {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Count');
        data.addColumn('number', 'Topic');
        for (var key in ticketData){
            data.addRow([key, ticketData[key]]);
        }
        options = {
            title: 'Issue Topics'
        };
        alert($('#pie_today_div').attr('id'));
        chart = new google.visualization.PieChart($('#pie_today_div'));
        chart.draw(data, options);
    },'json');     
}

要素が見つかったことを確認するためのデバッグ コードを alert($('#pie_today_div').attr('id')); 次に示します。

4

5 に答える 5

35

私はjqueryファンではありませんが、$('#pie_today_div')は一致した要素のセットを返すと思います。属性の計算が機能するのは、(jqueryのドキュメントから)「一致した要素のセットの最初の要素の属性の値を取得する」ためです。

だから試してみてください

chart = new google.visualization.PieChart($('#pie_today_div')[0]);

または直接

chart = new google.visualization.PieChart(document.getElementById('pie_today_div'));
于 2012-10-04T15:29:15.097 に答える
15

コンテナー エラーはまさにそれです。ID の例を探しています。

var chart = new google.visualization.PieChart(document.getElementById('chart_div'));

そのIDが欠落している場合、Google Chartsでこのエラー「コンテナが定義されていません」が表示されますしたがって、そのchart_div idを持つDivはこれを修正します

于 2014-10-07T01:14:47.833 に答える
-1

ただ言及したかったのですが、これは単純な間違いの後で私に起こりました。私が変更され

var data = new google.visualization.DataTable(huh);

グラフの種類を変更するために、次のようにします。

var data = new google.visualization.BarChart(huh);

しかし、これはすべて間違っています。コンテナに言及するチャートを変更します。

var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
于 2013-02-19T23:44:44.460 に答える