未捕获的TypeError:c.color.tweenTo不是函数

时间:2017-05-31 12:24:06

标签: javascript jquery ajax highcharts

我正在与Highcharts合作开展一个项目。一切都运行良好,然后,无缘无故(我没有改变任何东西),它不再工作(部分)。 我认为问题出在我如何加载我的js,但我找不到如何加载它们。

我有2个模块,显示了车辆的速度和转速。 In this picture,我们可以看到只有rpm的一个正在加载。之前,其中两个正在加载。 而且,我正在使用Ajax让它在现场上下运行,它正在工作,但现在它不再起作用了。

这是控制台中的错误:“未捕获的TypeError:c.color.tweenTo不是函数”。

首先,这是我的Highcharts脚本:

    $(function () {

        $(window).on('load resize', function(){
            var div = $('#container-speed');
            //div.height(div.width() * 0.75);
            div = $('#container-rpm');
            //div.height(div.width() * 0.75);        
        });

        var gaugeOptions = {

            chart: {
                type: 'solidgauge'
            },

            title: null,

            pane: {
                center: ['50%', '50%'],
                size: '100%',
                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.4, '#DDDF0D'], // yellow
                    [0.7, '#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('container-speed', Highcharts.merge(gaugeOptions, {
            yAxis: {
                min: 0,
                max: 200,
                title: {
                    text: 'Speed'
                }
            },

            credits: {
                enabled: false
            },

            series: [{
                name: 'Speed',
                data: [0],
                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'
                }
            }]
        }));

        var chartRpm = Highcharts.chart('container-rpm', Highcharts.merge(gaugeOptions, { //{y:.1f}
            yAxis: {
                min: 0,
                max: 7000,
                title: {
                    text: 'RPM'
                }
            },

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

        setInterval(function () {
            var vitesse = document.getElementById('myValues').value;

            var point,
                newVal,
                inc;
            if (chartSpeed) {
                point = chartSpeed.series[0].points[0];
                inc = Math.round((Math.random() - 0.5) * 100);
                newVal = point.y + inc;
                var vitessee =Math.round(vitesse);
                point.update(vitessee);
            }

            var rpm = document.getElementById('rpm').value;
            if (chartRpm) {
                point = chartRpm.series[0].points[0];
                inc = Math.round((Math.random() - 0.5) * 100);
                newVal = point.y + inc;

            var rpmm =Math.round(rpm);

                point.update(rpmm);
                }
            }, 2000);  
        });

这是我的ajax:

    function auto_load(){

        $.ajax({
            url: "traite.php",
            cache: false,
            success: function(data){
                data = JSON.parse(data);

                $("#myValues").val(parseInt(data[0].vitesse));
                $("#rapport").html('<label style="font-size: 20px">Rapport de vitesse : <br /><span style="font-size: 30px;">' + data[0].rapport + '</span></label>');

                if (data[0].tour_minute > 2000)
                    $("#conseil").html('<h3>Il serait temps de passer la vitesse</h3>');
                else
                    $("#conseil").html('');


                $("#rpm").val(data[0].tour_minute);
                $("#conso").html('<label style="font-size: 30px">Consommation : <br /><span style="font-size: 50px;">' + data[0].consomation + '</span> L/100km </label>');

                var poll =  parseInt(data[0].consomation * 0.7 * 3.67 * 10);
                $("#pollution").html('<label style="font-size: 30px">Rejet de CO2 : <br /><span style="font-size: 50px;">' + poll + '</span> gCO2/km </label>');

                $(".round").html();
            } 
        });
    }

以下是我加载js的方法:

<script src="js/jquery.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

<script src="test2.js"></script>

<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script src="https://code.highcharts.com/modules/solid-gauge.js"></script>

脚本test2.js是初始化我想要的图表

我已经搜索并尝试重新排列js,但它没有解决问题。 我尝试将solid-jauge.js放在highcharts-more.js之前,但是我在控制台中遇到了另一个错误:“Uncaught TypeError:c.init不是函数”。

我已经搜索了一周试图解决问题,但我似乎无法找到错误。

提前感谢任何利用时间帮助我的人! 如果错误只是一个简单的拼写错误或类似的错误,我很抱歉,如果你已经搜索了所有这些代码没有。

1 个答案:

答案 0 :(得分:1)

我遇到了和你一样的问题,并且发现这是由于CDN托管的solid-guage.js最近更新并且与我正在使用的本地highcharts.js不兼容。要解决此问题,请从Highcharts(https://www.highcharts.com/download)中提取源代码,并在项目中本地包含lib。所以而不是:

<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>

使用:

<script src="lib/highcharts.js"></script>
<script src="lib/highcharts-more.js"></script>
<script src="lib/solid-gauge.js"></script>