0

我正在使用谷歌图表,我正在尝试在表格上显示趋势线。只有表格的第一行实际显示趋势线。我还收到 Uncaught (in promise) TypeError: Cannot read property 'X' of undefined error message。任何帮助,将不胜感激。这是我得到的错误的屏幕截图:谷歌图表错误信息

这是我的代码:

     var dataFororange = [];
     var dataForred=[];
     var dataForblue=[];

    function calling(plot_data, color, row_num){
    if (color==1)
        dataFororange[row_num]=plot_data;        
    if (color==2) 
        dataForred[row_num]=plot_data;
    if (color==3) 
        dataForblue[row_num]=plot_data;
    }

    window.onload = function(e){ 
      google.charts.load('current', {packages: ['corechart', 'line']});
      google.charts.setOnLoadCallback(onChartLoad);
    }

    function onChartLoad() { 
    for(var i=0; i<20; i++){
        drawOrangeColor(dataFororange[i], i);
        drawRedColor(dataForred[i], i);
        drawBlueColor(dataForblue[i], i);
    }   
    }

    function drawOrangeColor(amount, counter) {

    var dataA = new google.visualization.DataTable();
    dataA.addColumn('new Date(Year, Month, Day, Hours, Minutes, Seconds, 
    Milliseconds)', 'X');
    dataA.addColumn('number', 'price');

    for(var i= 0; i<amount.X.length; i++){
        var date_string = amount.X[i];
        var year=date_string.slice(6,10);
        var month=date_string.slice(3,5);
        var day=date_string.slice(0,2);
        var dataY = amount.Y[i];
        dataA.addRows([[new Date(parseInt(year), parseInt(month)-1, 
    parseInt(day)), dataY]]);
    }
    var optionA = {
        legend: 'none',
        vAxis: { baselineColor: 'none',
                 gridlineColor: 'none',
                 textPosition: 'none' },
        hAxis: { baselineColor: 'none',
                gridlineColor: 'none',
                textPosition: 'none' },
                format: 'dd/MM/yyyy',
        backgroundColor: 'none',
        colors:['#ff8800']
    };
    var pos = "A_chart"+counter;
    var selected = document.getElementById(pos);
    var chart = new google.visualization.LineChart(selected);
    chart.draw(dataA, optionA);
    }

    ////////////////////////////////////
    function drawRedColor(amount, counter) {
    var dataB = new google.visualization.DataTable();
    dataB.addColumn('date', 'X');
    dataB.addColumn('number', 'price');
    for(var i= 0; i<amount.X.length; i++){
        var date_string = amount.X[i];
        var year=date_string.slice(6,10);
        var month=date_string.slice(3,5);
        var day=date_string.slice(0,2);
        var dataY = amount.Y[i];
        dataB.addRows([[new Date(parseInt(year), parseInt(month)-1, 
    parseInt(day)), dataY]]);
    }
    var optionB = {
        legend: 'none',
        vAxis: { baselineColor: 'none',
                 gridlineColor: 'none',
                 textPosition: 'none' },
        hAxis: { baselineColor: 'none',
                gridlineColor: 'none',
                format: 'dd/MM/yyyy',
                textPosition: 'none' },
        backgroundColor: 'none',
        colors:['red']
    };
    var pos = "B_chart"+counter;
    var selected = document.getElementById(pos);
    var chart = new google.visualization.LineChart(selected);
    chart.draw(dataB, optionB);
    }
    ///////////
    function drawBlueColor(amount, counter) {
    var dataC = new google.visualization.DataTable();
    dataC.addColumn('date', 'X');
    dataC.addColumn('number', 'price');
    for(var i= 0; i<amount.X.length; i++){
        var date_string = amount.X[i];
        var year=date_string.slice(6,10);
        var month=date_string.slice(3,5);
        var day=date_string.slice(0,2);
        var dataY = amount.Y[i];
        dataC.addRows([[new Date(parseInt(year), parseInt(month)-1, 
    parseInt(day)), dataY]]);
    }
    var optionC = {
        legend: 'none',
        vAxis: { baselineColor: 'none',
                 gridlineColor: 'none',
                 textPosition: 'none' },
        hAxis: { baselineColor: 'none',
                gridlineColor: 'none',
                format: 'dd/MM/yyyy',
                textPosition: 'none' },
        backgroundColor: 'none',
        colors:['blue']
    };
    var pos = "C_chart"+counter;
    var selected = document.getElementById(pos);
    var chart = new google.visualization.LineChart(selected);
    chart.draw(dataC, optionC);
    }

    function onUKChartLoad() {    
    drawOrangeColor(test_data);
    drawRedColor(test_data);
    drawBlueColor(test_data);
    }

`

4

1 回答 1

0

在代码的第 33 行,您试图获取对象的属性“X”。我不确定在这种情况下 X 应该是什么,但您可以尝试更改

amount.X.length

amount.length

遍历你的数组。请记住,数量是作为函数中的参数传入的,因此如果在调用函数时没有属性“X”,它将是未定义的。

于 2017-08-13T00:55:30.377 回答