4

ブートストラップ カルーセルの同じページにハイチャートを動的に作成しようとしています。

次のような「createChart」関数があります。

createChart(questiontitle, answers);

function createChart(questiontitle, answers){
    chart = new Highcharts.Chart(options); // Create new chart with general options
    chart.renderTo(container);
    for (var i = 0; i < answers.length; i++) {
        categories.push(answers[i].Text);
    }
    console.log(categories);
    chart.xAxis[0].setCategories(categories);
    chart.setTitle({ text: 'eerzera' });
    // redraw chart
    chart.redraw();
}

私はこのようなdivを持っています:

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

ご覧のとおり、「chart.renderTo」がありますが、常に同じエラーが発生します。

ハイチャート エラー #13

レンダリング div が見つかりません

このエラーは、chart.renderTo オプションが正しく設定されておらず、Highcharts がチャートをレンダリングする HTML 要素を見つけられない場合に発生します。

私の変数オプションは次のようなものです:

var options = {
        chart: {
            type: 'bar'
        },
        subtitle: {
            text: 'Source: Wikipedia.org'
        },
        xAxis: {
            categories: ['Africa', 'America', 'Asia', 'Europe', 'Oceania'],
            title: {
                text: null
            }
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Population (millions)',
                align: 'high'
            },
            labels: {
                overflow: 'justify'
            }
        },
        tooltip: {
            valueSuffix: ' millions'
        },
        plotOptions: {
            bar: {
                dataLabels: {
                    enabled: true
                }
            }
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'top',
            x: -40,
            y: 100,
            floating: true,
            borderWidth: 1,
            backgroundColor: '#FFFFFF',
            shadow: true
        },
        credits: {
            enabled: false
        },
        series: [{
            name: 'Year 1800',
            data: [107, 31, 635, 203, 2]
        }, {
            name: 'Year 1900',
            data: [133, 156, 947, 408, 6]
        }, {
            name: 'Year 2008',
            data: [973, 914, 4054, 732, 34]
        }]
    }

これはどのように可能ですか?

4

4 に答える 4

7

複数の renderTo を使用して複数のチャートを作成できるようにすることで、これを動的に維持することが目標である場合、同じオプションを使用して、次のようにすることができます。

変化する

function createChart(questiontitle, answers){
    chart = new Highcharts.Chart(options); 
    chart.renderTo(container);

に:

function createChart(questiontitle, answers){
    chart = $('#container').highcharts(options); 

または、jQuery を使用していない場合は、

function createChart(questiontitle, answers){
    options.chart.renderTo = 'container';
    chart = new Highcharts.Chart(options); 
于 2013-09-11T19:05:55.447 に答える
4

グーグルで誰かがこれに出くわした場合に備えて、 で要素を指定するときに、その要素が ID である場合renderToは含めないでください。#

この要素があれば<div id="graph-container"></div>

これは失敗します: renderTo: '#graph-container'

これは機能します: renderTo: 'graph-container'

Highcharts ドキュメントへの参照

于 2014-02-08T21:51:44.323 に答える