Выпадающий список, даты на JavaScript

148
23 января 2018, 13:32

Пытаюсь на JS сделать список с выпадающими датами (см. вложение).
Берется текущая дата, а точнее месяц и год, и от этой текущей даты должны отображаться будущие 12 месяцев и 3 прошедших месяца.
Вместо undefined 2018 должно быть Октябрь, Ноябрь и Декабрь 2017.

Скрипт ниже:

<script type="text/javascript">
Date.prototype.getMonthName = function(i) {
    var month = ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];
    return month[i];
}
var currentDate = new Date();
var cuurYear = currentDate.getFullYear();
var cuurMonth = currentDate.getMonth();
var objSelM = document.myForm.Month;
var objSelFM = document.myForm.FMonth;

window.onload = function selCuurDate(){ 
    var j = 0;
    for(var i = -3; i < 12; i++)    { 
        j = cuurMonth + i;      
        var y = 0;      
        if (j > 11) {
            j = j - 12;
            y = 1;
        }
        y = currentDate.getFullYear() + y;
        if (i == j){
            addOption(objSelM, currentDate.getMonthName(j) + " " + y, currentDate.getMonthName(j) + "_" + y, true, true);
            addOption(objSelFM, currentDate.getMonthName(j) + " " + y, currentDate.getMonthName(j) + "_" + y, true, true);
        } else {
            addOption(objSelM, currentDate.getMonthName(j) + " " + y, currentDate.getMonthName(j) + "_" + y, false, false);
            addOption(objSelFM, currentDate.getMonthName(j) + " " + y, currentDate.getMonthName(j) + "_" + y, false, false);
        }
    }
    OUT_IN.style.visibility = "hidden"
<!--    objSelM.selectedIndex = j;
<!--    objSelFM.selectedIndex = j;-->  
    objSelFM.width = 200;
    clickChg(objSelFM.value);
}     
function addOption (oListbox, text, value, isDefaultSelected, isSelected)
{
    var oOption = document.createElement("option");
    oOption.appendChild(document.createTextNode(text));
    oOption.setAttribute("value", value);
    if (isDefaultSelected) oOption.defaultSelected = true;
    if (isSelected) oOption.selected = true;
    oListbox.appendChild(oOption);
}

</script>
Answer 1

Добавьте такую проверку для учета случаев, когда какие-то из трех предыдущих месяцев попадают в прошлый год:

if (j < 0) {
  j = j + 12;
  y = -1;
}
READ ALSO
Создание и уничтожение кнопки в JS без HTML

Создание и уничтожение кнопки в JS без HTML

Есть задача создать кнопку непосредственно в JS, без участия HTML и повесить ее появление и уничтожение в зависимость от условийСобственно,...

160
Как сделать поиск пользователей по мере набора его имени

Как сделать поиск пользователей по мере набора его имени

Всем приветК сожалению я не знаю как объяснить грамотно и правильно то, что мне нужно, но попытаюсь

202
Google Scripts. Код не работает, но почему?

Google Scripts. Код не работает, но почему?

Переработал код по ссылкеСуть в том, что после создания календаря событий, я не могу туда через форму добавить событие

162