$ .function不是一个函数--jQuery

时间:2017-07-27 14:28:04

标签: jquery ajax function chart.js

我意识到这可能是重复的,我仍然在问的原因是同事有一张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

1 个答案:

答案 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;
}