HTML选择选项显示在12个月

时间:2015-07-09 07:39:33

标签: javascript html5

我希望将未来12个月的当前月份和年份绑定到下拉列表。我使用以下代码绑定月份和年份。

function writeMonthOptions() {
            var myselect = document.getElementById("drp6"), year = new Date().getFullYear();
            var today = new Date();
            var optionValues;

            var gen = function (max) {
                do {
                    optionValues = months[today.getMonth() + max] + ' ' + year;
                    myselect.add(new Option(optionValues, optionValues), null);
                    max++;
                } while (max < 12);
            }(0);
        }

我的HTML代码:

    <select name="drp6" id="drp6"></select>

但我得到如下选择选项:
2015年7月
2015年8月
2015年9月
2015年10月
2015年11月
2015年12月
undefined 2015
undefined 2015
undefined 2015
undefined 2015
undefined 2015年

我该如何解决?感谢

2 个答案:

答案 0 :(得分:1)

由于只有12个月,如果你试图在optionValues = months[today.getMonth() + max] + ' ' + year;中获得数月[13],那么它将被“未定义”。

此外,年份应该是相当大的一部分,当你进入新的一年时,年份的价值应该是2016年。

您可以更改为:

      

     //demo value.
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];


   function writeMonthOptions() {
        var myselect = document.getElementById("drp6"), year = new Date().getFullYear();
        var today = new Date();
        var optionValues;
    
        var gen = function (max) {
            var curMonth = today.getMonth();
            var curYear = year;  // presevere outer year value if you hava other use
            do {
                optionValues = months[curMonth] + ' ' + curYear;
                myselect.add(new Option(optionValues, optionValues), null);
    
                ++curMonth;
    
                // When months reach the 13th ele of months, advance to next year.
                if (curMonth === months.length) {
                    ++curYear;
                    curMonth = 0;
                }
    
                max++;
            } while (max < 12);
        }(0);
    }
    
    // test.
    writeMonthOptions();
<select id="drp6"></select>

答案 1 :(得分:1)

您只需将months索引更改为:(today.getMonth() + max) % today.getMonth()

编辑更改年份:

此外,您需要调整年份,这会给我们:optionValues = months[index % months.length] + ' ' + (year + Math.floor(index / months.length));

这就是你需要改变的全部。

&#13;
&#13;
window.onload = function() {
function writeMonthOptions() {
            var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
            var myselect = document.getElementById("drp6"), year = new Date().getFullYear();
            var today = new Date();
            var optionValues;
            var index;
    
            var gen = function (max) {
                do {
                    index = today.getMonth() + max;
                    optionValues = months[index % months.length] + ' ' + (year + Math.floor(index / months.length));
                    myselect.add(new Option(optionValues, optionValues), null);
                    max++;
                } while (max < 12);
            }(0);
        }
    writeMonthOptions();
};
&#13;
<select name="drp6" id="drp6"></select>
&#13;
&#13;
&#13;