2017-07-27 45 views
0

我意識到這可能是重複的,我仍然要問的原因是一個同事有一個chartJS的折線圖。我複製了他的代碼,使它適合條形圖並稍微改變了ajax調用。代碼實際上是相同的,並且我已經對正確的語法進行了多次檢查。我正在使用一個稍微改變了的js腳本來調用jQuery函數,但是在我創建條形圖之前這仍然有效。

網頁上的腳本是:

var url = '/stats/test-stats'; 

$('input[name="demographics"]').on('change', function() { 
    console.log('changed demo to ' + this.value); 
    if (this.value == '/stats/conversion-stats') { 
     url = this.value; 
     // console.log(url); 
    } 
}); 

$('input[name="daterange"]').daterangepicker({ 
    opens: 'left', 
    ranges: { 
    'Today': [moment(), moment()], 
    'Yesterday': [moment().subtract(1, 'days'), moment()], 
    'Last 7 Days': [moment().subtract(6, 'days'), moment()], 
    'Last 30 Days': [moment().subtract(29, 'days'), moment()], 
    'This Month': [moment().startOf('month'), moment().endOf('month')], 
    'Last Month': [moment().subtract(1, 'month').startOf('month'),moment().subtract(1, 'month').endOf('month')] 
} 
}); 

$('input[name="daterange"]').on('apply.daterangepicker', function(ev, picker) { 
$.getBarData(url,'Average Dwell Time',picker.startDate.format('YYYY-MM-DD'),picker.endDate.format('YYYY-MM-DD')); 
}); 

$(document).ready(function() { 
$.getBarData(url,'Average Dwell Time'); 
}); 

我已經看到了關於添加(jQuery的)不同地區或($),但我的同事並沒有做到這一點,他的作品......

這裏是我的功能是不是一個函數...

jQuery.getBarData = function(url='/stats/dwell-time-stats',label='',startDate='',endDate='') { 
    console.log('called'); 

    function removeData(chart) { 
     chart.data.labels.pop(); 
     chart.data.datasets.forEach((dataset) => { 
      dataset.data.pop(); 
     }); 
     chart.update(); 
    } 
    $.ajax({ 
     url: url, 
     method: 'GET', 
     dataType: 'json', 
     data: { 
      startDate: startDate, 
      endDate: endDate 
     }, 
     success: function (d) { 

      window.barChart.data.labels = []; 

      window.barChart.data.datasets.forEach((dataset) => { 
       dataset.data = []; 
      }); 


      $.each(d.labels,function(k,v){ 
       window.barChart.data.labels.push(v); 
      }); 

      $.each(d.recordsOne,function(k,v){ 
       window.barChart.data.datasetOne => { 
        //datasetOne.label = l[0]; 
        data.push(v); 
       } 
      }); 

      $.each(d.recordsTwo,function(k,v){ 
       window.barChart.data.datasetTwo => { 
        //datasetTwo.label = l[1]; 
        data.push(v); 
       } 
      }); 

      window.barChart.update(); 

     } 
    }); 
}; 

由於這是從chartJS的CTX,圖表選項和數據是功能上面定義,整個腳本開頭: $(function(){'use strict';/code here /});

我會問我的同事,但他們暫時無法使用。任何幫助是極大的讚賞。

錯誤消息:

jquery.min.js:2 Uncaught TypeError: $.getBarData is not a function 
    at HTMLDocument.<anonymous> (test_stat:206) 
    at j (jquery.min.js:2) 
    at k (jquery.min.js:2) 
(anonymous) @ test_stat:206 
j @ jquery.min.js:2 
k @ jquery.min.js:2 
+4

究竟哪裏出錯?這段代碼中沒有'$ .function'的實例。另外,'function'保留afaik。我懷疑你可以創建一個名爲'function'的函數。 – Carcigenicate

+0

提供確切的錯誤信息 – charlietfl

+1

[如何給jQuery添加一個函數?](https://stackoverflow.com/questions/1768150/how-to-add-a-function-to-jquery) – Salketer

回答

0

這是我缺乏chart.js之

我缺少需要的功能的convertHex(),我認爲是我的同事創建,然後就認識造成的不曾用過。

基本上,語法錯誤和缺失函數導致混淆錯誤語句。

功能:

function convertHex(hex,opacity){ 
    hex = hex.replace('#',''); 
    var r = parseInt(hex.substring(0,2), 16); 
    var g = parseInt(hex.substring(2,4), 16); 
    var b = parseInt(hex.substring(4,6), 16); 

    var result = 'rgba('+r+','+g+','+b+','+opacity/100+')'; 
    return result; 
} 
相關問題