使用javascript显示最近3个月的下拉列表

使用javascript显示最近3个月的下拉列表,javascript,jsp,drop-down-menu,struts2,Javascript,Jsp,Drop Down Menu,Struts2,我试图在下拉列表中使用javascript显示本月的最后3个月(包括总共4个月) function writeMonthOptions() { var months = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"); var today = new Date(); var date = new Date(today); da

我试图在下拉列表中使用javascript显示本月的最后3个月(包括总共4个月)

function writeMonthOptions() {
    var months = new Array("01", "02", "03", "04", "05", "06", "07", "08",
            "09", "10", "11", "12");
    var today = new Date();
    var date = new Date(today);
    date.setFullYear(date.getFullYear() - 1);
    var dropDown = document.getElementById("Month_list");
    var i = today.getMonth();
    var optionNames;
    var optionValues;
    var beanData = '<s:property value="month" />';
    while (i < (today.getMonth() + 4)) {
        optionNames = months[i];
        optionValues = today.getFullYear() + '' + months[i];
        dropDown.options[i++] = new Option(optionNames, optionValues);
        if (beanData) {
            if (beanData == (today.getFullYear() + "" + monthsInd[today
                    .getMonth()])) {
                dropDown.selectedIndex = i - 1;
            }
        }
    }
}
函数writeMonthOptions(){
变量月份=新数组(“01”、“02”、“03”、“04”、“05”、“06”、“07”、“08”,
"09", "10", "11", "12");
var today=新日期();
var日期=新日期(今天);
date.setFullYear(date.getFullYear()-1);
var dropDown=document.getElementById(“月列表”);
var i=today.getMonth();
var期权名称;
var期权价值;
var Beanda=“”;
而(我<(today.getMonth()+4)){
期权名称=月[i];
optionValues=today.getFullYear()+“”+月[i];
选项[i++]=新选项(选项名称、选项值);
如果(比恩达){
如果(Beanda==(today.getFullYear()+“”+monthsInd[今天
.getMonth())){
dropDown.selectedIndex=i-1;
}
}
}
}
简单来说,在视图部分显示当前月份和前3个月的下拉列表。 要进行后端,它需要以[YYYYMM]的形式提交


若该值已存在于bean中,则在下拉列表中将其显示为选中。[保证在这4个月内]

此函数返回上个月的
n
,包括当前月份:

function getLastMonths(n) {

    var months = new Array();

    var today = new Date();
    var year = today.getFullYear();
    var month = today.getMonth() + 1;

    var i = 0;
    do {
        months.push(year + (month > 9 ? "" : "0") + month);
        if(month == 1) {
            month = 12;
            year--;
        } else {
            month--;
        }
        i++;
    } while(i < n);

    return months;

}
印刷品:

201211,201210,201209,201208


然后,在下拉框中添加这些值非常容易:

function writeMonthOptions() {   

   var optionValues = getLastMonths(4);
   var dropDown = document.getElementById("monthList");

   for(var i=0; i<optionValues.length; i++) {
       var key = optionValues[i].slice(4,6);
       var value = optionValues[i];
       dropDown.options[i] = new Option(value, key);
    }

}

此函数返回上个月的
n
,包括当前月份:

function getLastMonths(n) {

    var months = new Array();

    var today = new Date();
    var year = today.getFullYear();
    var month = today.getMonth() + 1;

    var i = 0;
    do {
        months.push(year + (month > 9 ? "" : "0") + month);
        if(month == 1) {
            month = 12;
            year--;
        } else {
            month--;
        }
        i++;
    } while(i < n);

    return months;

}
印刷品:

201211,201210,201209,201208


然后,在下拉框中添加这些值非常容易:

function writeMonthOptions() {   

   var optionValues = getLastMonths(4);
   var dropDown = document.getElementById("monthList");

   for(var i=0; i<optionValues.length; i++) {
       var key = optionValues[i].slice(4,6);
       var value = optionValues[i];
       dropDown.options[i] = new Option(value, key);
    }

}

最后两段的表述就像家庭作业一样。Amirite?“本月的最后3个月”-你的意思是“过去3个月和[本月]”?你在寻找类似
(4次){options.add({显示:t.month,发送:t.year+t.month});t.add(1个月)}
还是你在为这件事的某个特定部分而斗争?@JanDvorak是的,包括本月4个月:)我是一名IT员工,不是学生;)最后两段的表述就像家庭作业一样。Amirite?“本月的最后3个月”-你的意思是“过去3个月和[本月]”?你在寻找类似
(4次){options.add({显示:t.month,发送:t.year+t.month});t.add(1个月)}
还是你在为这件事的某个特定部分而斗争?@JanDvorak是的,包括本月4个月:)我是一名IT员工,不是学生;)你能写下如何添加到下拉列表吗。我正在尝试使用js切片函数来获取月份。但不起作用:(@NitinGurram我编辑了我的答案,请看。你能写下如何添加到下拉列表中吗。我正在尝试使用js slice函数获取月份。但不起作用:(@NitinGurram我编辑了我的答案,请看。