Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将最后几个月计算为一个期间,并通过javascript更新图表_Javascript_Jquery - Fatal编程技术网

如何将最后几个月计算为一个期间,并通过javascript更新图表

如何将最后几个月计算为一个期间,并通过javascript更新图表,javascript,jquery,Javascript,Jquery,我需要根据时间段更新图表 目前,图表正在更新从1月到12月的3,6,9,12个月的所有值 现在我需要更新图表 最后3个月-表示当前月份是12月,所以我需要得到12月、11月和10月的图表 过去6个月12月、11月、10月、9月、8月、7月 过去9个月12月、11月、10月、9月、8月、7月、6月、5月、4月 一月到本月获取一月到本月的图表 我已经在计算当前月份了,但我不知道如何附加到图表上 我调用同一个图表函数的另一件事是,有一种方法可以减少代码。我试过了,但没能弄明白 谢谢你的帮助 JSFID

我需要根据时间段更新图表

目前,图表正在更新从1月到12月的3,6,9,12个月的所有值

现在我需要更新图表

最后3个月-表示当前月份是12月,所以我需要得到12月、11月和10月的图表 过去6个月12月、11月、10月、9月、8月、7月 过去9个月12月、11月、10月、9月、8月、7月、6月、5月、4月 一月到本月获取一月到本月的图表 我已经在计算当前月份了,但我不知道如何附加到图表上

我调用同一个图表函数的另一件事是,有一种方法可以减少代码。我试过了,但没能弄明白

谢谢你的帮助

JSFIDLE Html


@dm4web的解决方案运行良好。最后一个请求解决方案是:在第一行添加这个

var currentMonth = new Date().getMonth();
$('#SelectPeriod').find('option:first').val(currentMonth +1); 
p、 添加了s.currentMonth+1,因为引用是一月。如果要从二月到月份,必须使用like.valcurrentMonth+1

更新2:

HTML:


谢谢@dm4web,它工作得很好。但是我需要得到我在1月到这个月的问题中提到的另一个值。你能告诉我怎么做吗?非常感谢,很抱歉更新太晚了。有什么办法可以让我少写代码吗?谢谢你,对不起,我没有足够的声望点数来弥补我的投票。如果可能的话,让我知道如何减少代码。我调用同一个图表函数,三次,有没有办法减少代码。
var data = [
['data4', 'data2', 'data3'],
[90, 120, 300],
[40, 160, 240],
[50, 200, 290],
[120, 160, 230],
[80, 130, 300],
[90, 220, 320],
[90, 120, 300],
[40, 160, 240],
[50, 200, 290],
[120, 160, 230],
[80, 130, 300],
[90, 220, 320]
];


//calculating current month
var currentMonth = new Date().getMonth();
console.log(currentMonth);

//c3 customisation
var chart = c3.generate({
bindto : '#chart',
data : {
    rows : data,
    type : 'bar',
},
axis : {
    x : {
        tick : {
            format : function (d) {
                return formatMonth(d);
            }
        }
    }
}
});

//select chart type
$("#chartType").change(function (evt) {
var chartSelection = $("#chartType").val();
var timePeriod = $("#SelectPeriod").val();
var chart = c3.generate({
    data : {
        rows : data.slice(0, parseInt(timePeriod) + 1),
        type : chartSelection
    },
    axis : {
        x : {
            tick : {
                format : function (d) {
                    return formatMonth(d);
                }
            }
        }
    }
});

});

//select time period
$("#SelectPeriod").change(function (evt) {
var chartSelection = $("#chartType").val();
var timePeriod = $("#SelectPeriod").val();
var chart = c3.generate({
    data : {
        rows : data.slice(0, parseInt(timePeriod) + 1),
        type : chartSelection
    },
    axis : {
        x : {
            tick : {
                format : function (d) {
                    return formatMonth(d);
                }
            }
        }
    }
});
});

//function for months
function formatMonth(d) {
if (!d) {
return "JAN";
}
var months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
return month = months[d];
}
var currentMonth = new Date().getMonth();
$('#SelectPeriod').find('option:first').val(currentMonth +1); 
<select id="SelectPeriod">
    <option value="-1">January to this month</option>
    <option value="3">Last 3 months</option>
    <option value="6">Last 6 months</option>
    <option value="9">Last 9 months</option>
    <option value="12">Last 12 months</option>
</select>
//select time period
$("#SelectPeriod").change(function (evt) {
    var chartSelection = $("#chartType").val();
    var timePeriod = $("#SelectPeriod").val();

    if (timePeriod == -1) timePeriod = currentMonth + 1;

    var end=currentMonth+2;
    var start=end-timePeriod;
    var data2=[];    
    data2.push(data[0]);    
    data2=data2.concat(data.slice(start, end));
    //alert(start+'/'+end+'='+data2)

    var chart = c3.generate({
        data: {
            rows: data2,
            type: chartSelection
        },
        axis: {
            x: {
                tick: {
                    format: function (d) {
                        return formatMonth(d);
                    }
                }
            }
        }
    });
});

//function for months
function formatMonth(d) {
    var timePeriod = $("#SelectPeriod").val();

    if (timePeriod == -1) timePeriod = currentMonth + 1;

    timePeriod--;
    d=currentMonth-timePeriod+d;

    if (!d) {
        return "JAN";
    }
    var months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
    return month = months[d];
}