Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2020, 00:43   #1
jurvrn.ru
Новичок
Джуниор
 
Регистрация: 08.07.2019
Сообщений: 2
По умолчанию Календарь отстает на день

календарь отстает на один день, и к прошедшим дням подставляется минус.
Код:
<script>
    function Calendar3(id, year, month) {
        var Dlast = new Date(year,month+1,0).getDate(),
            D = new Date(year,month,Dlast),
            DNlast = D.getDay(),
            DNfirst = new Date(D.getFullYear(),D.getMonth(),1).getDay(),
            calendar = '<tr>',
            m = document.querySelector('#'+id+' option[value="' + D.getMonth() + '"]'),
            g = document.querySelector('#'+id+' input');
        
        var lastmonth = 32 - new Date(g.value, m.value-1, 32).getDate();
            if (DNfirst != 0) {
                for(var  i = DNfirst; i > 1; i--) calendar += '<td style="color: Gray">' + (lastmonth-i);
            }else{
                for(var  i = 6; i > 0; i--) calendar += '<td style="color: Gray">' + (lastmonth-i);
            }
        
        for(var  i = 1; i <= Dlast; i++) {
            if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) {
                calendar += '<td class="today">' + i;
            } else {
                calendar += '<td>' + i;
            }
            if (new Date(D.getFullYear(),D.getMonth(),i).getDay() == 0) {
                calendar += '<tr>';
            }
        }
        
        var dayaftermonth = 1;
                    for(var  i = DNlast; i < 8; i++) {
                      if(i > DNlast) {
                        calendar += '<td style="color: Gray">' + dayaftermonth;
                        dayaftermonth ++;
                      }
                    }
                
        document.querySelector('#'+id+' tbody').innerHTML = calendar;
        g.value = D.getFullYear();
        m.selected = true;
        if (document.querySelectorAll('#'+id+' tbody tr').length < 6) {
            document.querySelector('#'+id+' tbody').innerHTML += '<tr><td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;';
        }
        document.querySelector('#'+id+' option[value="' + new Date().getMonth() + '"]').style.color = 'rgb(230, 33, 33)'; // в выпадающем списке выделен текущий месяц
    }
    Calendar3("calendar3",new Date().getFullYear(),new Date().getMonth());
    document.querySelector('#calendar3').onchange = function Kalendar3() {
        Calendar3("calendar3",document.querySelector('#calendar3 input').value,parseFloat(document.querySelector('#calendar3 select').options[document.querySelector('#calendar3 select').selectedIndex].value));
    }
</script>

Последний раз редактировалось jurvrn.ru; 07.07.2020 в 02:24.
jurvrn.ru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти те даты, когда день рождения попадает на тот же день Дюша Метелкин Паскаль, Turbo Pascal, PascalABC.NET 8 23.06.2016 11:16
Denwer как всегда отстает oldsnowman Общие вопросы Web 8 07.04.2016 15:40
Календарь на форме и поле сводной таблицы: год - месяц - день Slom83 Microsoft Office Excel 0 21.01.2015 12:13
Отстает секундомер hon Общие вопросы Delphi 7 03.10.2011 09:59
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник dan1991 Помощь студентам 1 01.03.2009 20:59