Advertisement
Liliana797979

calendar - js advanced exam

Oct 23rd, 2021
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function calendar(arr) {
  2.     let monthNames = ["January", "February", "March", "April", "May", "June",
  3.         "July", "August", "September", "October", "November", "December"
  4.     ];
  5.  
  6.     let selector = $('#content');
  7.  
  8.     let day = Number(arr[0]);
  9.     let month = Number(arr[1]);
  10.     let year = Number(arr[2]);
  11.  
  12.     let table = $('<table>');
  13.     let caption = $('<caption>').text(`${monthNames[month - 1]} ${year}`);
  14.     let tbody = $('<tbody>');
  15.     let trDays = $('<tr>');
  16.  
  17.     for (let i = 0; i < 7; i++) {
  18.         let th = $('<th>').text(calcDay(i));
  19.         trDays.append(th);
  20.     }
  21.  
  22.     table.append(caption);
  23.     tbody.append(trDays);
  24.  
  25.     let days = daysInMonth(month, year);
  26.     let firstDay = new Date(year, month-1 , 0).getDay()+1;
  27.     console.log(firstDay);
  28.     let countDays = 1;
  29.     let whenToStart = false;
  30.  
  31.     while (true) {
  32.  
  33.         if (countDays > days) {
  34.             break
  35.         }
  36.  
  37.         let tr = $('<tr>');
  38.  
  39.         for (let i = 1; i <=7; i++) {
  40.  
  41.             let td = $('<td>');
  42.  
  43.             if(day === countDays){
  44.                 $(td).addClass('today')
  45.             }
  46.  
  47.             if (Number(firstDay) === i) {
  48.                 whenToStart = true;
  49.             }
  50.             if (countDays <= Number(days) && whenToStart === true){
  51.                 td.text(countDays)
  52.                 countDays++
  53.             }
  54.  
  55.             $(tr).append(td);
  56.         }
  57.         tbody.append(tr);
  58.     }
  59.     table.append(tbody);
  60.     table.appendTo(selector);
  61.  
  62.     function calcDay(num) {
  63.         let day;
  64.         switch (num) {case 0:day = 'Mon';break;
  65.             case 1:day = 'Tue';break;
  66.             case 2:day = 'Wed';break;
  67.             case 3:day = 'Thu';break;
  68.             case 4:day = 'Fri';break;
  69.             case 5:day = 'Sat';break;
  70.             case 6:day = 'Sun';break;
  71.         }
  72.         return day;
  73.     }
  74.  
  75.     function daysInMonth(m, y) {
  76.         return new Date(y, m, 0).getDate();
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement