2017-05-31 141 views
0

我正在使用Highcharts進行項目。一切工作正常,然後,沒有理由(我沒有改變任何東西),它不再工作(部分)。 我認爲問題出在我如何加載我的js,但我找不到如何加載它們。未捕獲的類型錯誤:c.color.tweenTo不是函數

我得到2個模塊,其顯示速度和驅動車輛的轉速。 In this picture,我們可以看到只有一個用於加載rpm。之前,其中2人正在加載。 此外,我正在與Ajax合作,讓它在現場直播,它正在工作,但現在它不再工作。

下面是我在控制檯中的錯誤:「遺漏的類型錯誤: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不是函數」。

我搜索了一個星期,試圖解決這個問題,但我似乎無法找到的錯誤。

在此先感謝的人誰用自己的時間來幫助我! 如果錯誤只是一個簡單的錯字或類似的東西,我很抱歉,如果你已經在所有這些代碼中搜索爲零。

+0

你定的代碼沒有在那裏包含類似'c.color.tweenTo'東西。所以它很混亂 –

+0

'c.color.tweenTo'和'c.init'在test2.js腳本中,但由於它是一個混亂的混亂,我沒有把它放在這裏。 – Zackarocco

+0

只有當沒有添加相應的庫文件時纔會發生這種情況,或者在此第三方庫之前沒有添加jQuery庫。 –

回答

1

我有同樣的問題,你想通了這是由於CDN託管固體guage.js最近正在更新,並與我所用的本地highcharts.js不兼容。要修復它,請從Highcharts(https://www.highcharts.com/download)中拉取源代碼,並在您的項目中本地包含這些庫。因此,而不是:

<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> 
相關問題