如何通过代码为highcharts图形创建div容器?

时间:2017-09-18 02:41:31

标签: javascript highcharts

我需要为highcharts图形创建一个div容器。这应该通过代码完成,但我无法使其工作。

按代码创建div的原因是因为我必须显示许多图形。

目前我首先创建div,然后创建id,最后创建属性。

图形错误:

Error on graphic

示例:

http://jsfiddle.net/povyq7em/1/

我的代码是:

var nombre="container-speed";

var div = document.createElement('div');
div.setAttribute("style", "width: 580px; height: 400px; float: left");
div.setAttribute("id", nombre);


var gaugeOptions = {

    chart: {
        type: 'solidgauge'
    },

    title: null,

    pane: {
        center: ['50%', '85%'],
        size: '140%',
        startAngle: -90,
        endAngle: 90,
        background: {
            backgroundColor: (Highcharts.theme && 
            Highcharts.theme.background2) || '#EEE',
            innerRadius: '60%',
            outerRadius: '100%',
            shape: 'arc'
        }
    },

    tooltip: {
        enabled: false
    },


    yAxis: {
        stops: [
            [0.1, '#55BF3B'], // green
            [0.5, '#DDDF0D'], // yellow
            [0.9, '#DF5353'] // red
        ],
        lineWidth: 0,
        minorTickInterval: null,
        tickAmount: 2,
        title: {
            y: -70
        },
        labels: {
            y: 16
        }
    },

    plotOptions: {
        solidgauge: {
            dataLabels: {
                y: 5,
                borderWidth: 0,
                useHTML: true
            }
        }
    }
};


var chartSpeed = Highcharts.chart(nombre, Highcharts.merge(gaugeOptions, {
    yAxis: {
        min: 0,
        max: 200,
        title: {
            text: 'Speed'
        }
    },

    credits: {
        enabled: false
    },

    series: [{
        name: 'Speed',
        data: [80],
        dataLabels: {
            format: '<div style="text-align:center"><span style="font-size:25px;color:' +
                ((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y}</span><br/>' +
                   '<span style="font-size:12px;color:silver">km/h</span></div>'
        },
        tooltip: {
            valueSuffix: ' km/h'
        }
    }]

}));
.highcharts-yaxis-grid .highcharts-grid-line {
	display: none;
}
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script src="https://code.highcharts.com/modules/solid-gauge.js"></script>

<!--<div id="container-speed" style="width: 300px; height: 200px; float: left"></div>-->

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

你只是错过了一步。您需要在创建元素后附加元素。这是代码的开头:

var nombre="container-speed";
var div = document.createElement('div');
div.setAttribute("style", "width: 580px; height: 400px; float: left");
div.setAttribute("id", nombre);
// APPEND ELEMENT TO document.body
document.body.appendChild(div);

另外,我更新了您的fiddle

根据您的要求,我再次更新了fiddle。我做了3次修改。其中只有一个非常重要。

  1. 声明和值名称,用作元素id和grafica()的参数 var name = "chart-" + i;
  2. setAttribute改为div.setAttribute("id", name);
  3. ***最重要的是,您在每个地方都将变量nombre更改为name,但是您可以告诉我var chartSpeed = Highcharts.chart(name, Highcharts.merge(gaugeOptions, {...,我已更新。