За последние 24 часа нас посетили 21530 программистов и 1023 робота. Сейчас ищут 709 программистов ...

ошибка календаря

Тема в разделе "JavaScript и AJAX", создана пользователем jurvrn.ru, 3 июл 2020.

  1. jurvrn.ru

    jurvrn.ru Новичок

    С нами с:
    14 июн 2019
    Сообщения:
    97
    Симпатии:
    2
    есть виджет для Wordpress (календарь), часть кода в нем на javascript. Почему то стал отображаться с ошибками и текущая дата смещена.
    [​IMG]

    [​IMG]
    код:
    Код (Javascript):
    1. <script>
    2.     function Calendar3(id, year, month) {
    3.         var Dlast = new Date(year,month+1,0).getDate(),
    4.             D = new Date(year,month,Dlast),
    5.             DNlast = D.getDay(),
    6.             DNfirst = new Date(D.getFullYear(),D.getMonth(),1).getDay(),
    7.             calendar = '<tr>',
    8.             m = document.querySelector('#'+id+' option[value="' + D.getMonth() + '"]'),
    9.             g = document.querySelector('#'+id+' input');
    10.      
    11.         var lastmonth = 32 - new Date(g.value, m.value-1, 32).getDate();
    12.             if (DNfirst != 0) {
    13.                 for(var  i = DNfirst; i > 1; i--) calendar += '<td style="color: Gray">' + (lastmonth-i);
    14.             }else{
    15.                 for(var  i = 6; i > 0; i--) calendar += '<td style="color: Gray">' + (lastmonth-i);
    16.             }
    17.      
    18.         for(var  i = 1; i <= Dlast; i++) {
    19.             if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) {
    20.                 calendar += '<td class="today">' + i;
    21.             } else {
    22.                 calendar += '<td>' + i;
    23.             }
    24.             if (new Date(D.getFullYear(),D.getMonth(),i).getDay() == 0) {
    25.                 calendar += '<tr>';
    26.             }
    27.         }
    28.      
    29.         var dayaftermonth = 1;
    30.                     for(var  i = DNlast; i < 8; i++) {
    31.                       if(i > DNlast) {
    32.                         calendar += '<td style="color: Gray">' + dayaftermonth;
    33.                         dayaftermonth ++;
    34.                       }
    35.                     }
    36.              
    37.         document.querySelector('#'+id+' tbody').innerHTML = calendar;
    38.         g.value = D.getFullYear();
    39.         m.selected = true;
    40.         if (document.querySelectorAll('#'+id+' tbody tr').length < 6) {
    41.             document.querySelector('#'+id+' tbody').innerHTML += '<tr><td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;<td>&nbsp;';
    42.         }
    43.         document.querySelector('#'+id+' option[value="' + new Date().getMonth() + '"]').style.color = 'rgb(230, 33, 33)'; // в выпадающем списке выделен текущий месяц
    44.     }
    45.     Calendar3("calendar3",new Date().getFullYear(),new Date().getMonth());
    46.     document.querySelector('#calendar3').onchange = function Kalendar3() {
    47.         Calendar3("calendar3",document.querySelector('#calendar3 input').value,parseFloat(document.querySelector('#calendar3 select').options[document.querySelector('#calendar3 select').selectedIndex].value));
    48.     }
    49. </script>
    если не получится исправить - перейду на php-календарь
     
    #1 jurvrn.ru, 3 июл 2020
    Последнее редактирование: 3 июл 2020