向jquery highcharts中插入数据失败

Insert data into jquery highcharts fail

本文关键字:数据 失败 插入 jquery highcharts      更新时间:2023-09-26

我想把表格中的数据放到highcharts中。

表将首先加载,然后在body关闭之前的底部,我将抓取数据到highcharts中显示。

我试过了,但不工作,我认为语法有问题…

<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="../../includes/js/highcharts/highcharts.js"></script>       
<script type="text/javascript" src="../../includes/js/highcharts/modules/exporting.js"></script>    
</head>
<body>
bla bla bla
bla bla bla
bla bla bla

<table class="dataTbl">
<tbody>
<tr><td>fruit</td><td>qty</td></tr>
<tr><td>apple</td><td>1</td></tr>
<tr><td>banana</td><td>5</td></tr>
<tr><td>durian</td><td>3</td></tr>
</tbody>
</table>
//to load pie chart at the last, data obtain from table
<div id="container" style="width: 400px; height: 300px; margin: 0 auto"></div>

<script type="text/javascript">

var chart;
$(document).ready(function() {

        chart = new Highcharts.Chart({
                chart: {
                        renderTo: 'container',
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false
                },
                title: {
                        text: 'Top fruits'
                },
                tooltip: {
                        formatter: function() {
                                return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                        }
                },
                plotOptions: {
                        pie: {
                                allowPointSelect: true,
                                cursor: 'pointer',
                                dataLabels: {
                                        enabled: true,
                                        color: '#000000',
                                        connectorColor: '#000000',
                                        formatter: function() {
                                                return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                                        }
                                }
                        }
                },
                series: [{
                            type: 'pie',
                            name: 'Browser share',
                            data: [
                                    ['Firefox',   45.0],
                                    ['IE',       26.8],
                                    ['Chrome', 12.8],
                                    ['Safari',    8.5],
                                    ['Opera',     6.2],
                                    ['Others',   0.7]
                            ]
                    }]
                //default series data sample given by highchart, how to override this?
        });

        $(".dataTbl > tbody > tr").each(function (index) {
            if (index != 0) {
                var chartnumbervalue = parseInt($(this).find("td:first").next('td').text());
                var charttextvalue = jQuery.trim($(this).find("td:first").text());
                //chart.series[0].data.push([charttextvalue, chartnumbervalue]);
                //i want to push the data into series: data: but fail...
            }
        });

});
</script>
</body>

我想出了一个解决方案,并把它放在这里:http://jsfiddle.net/CAKQH/21189/

所以你必须理解的主要事情是,实际图表的系列"部分"是一个可以采取几种不同形式的对象数组。您可以在这里阅读更多内容:http://www.highcharts.com/ref/#series

所以我的方法和你在代码中描述的方法的最大区别是,在实际创建图表之前,我先为highcharts准备了数据。

var piechartinfo = {
                            type: 'pie',
                            name: 'Custom Info',
                            data: []
                    }

我让数据数组为空,因为你的jquery循环之后会填充它。

            //chart.series[0].data.push([charttextvalue, chartnumbervalue]);
            piechartinfo.data.push([charttextvalue, chartnumbervalue]);

然后,当实际的图表被实例化时,我添加piechartinfo对象

series: [piechartinfo]