我意识到这可能是重复的,我仍然在问的原因是同事有一张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
答案 0 :(得分: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;
}