JSFiddle - React, Tailwind, and code Playground
by kigorw
HTML
<html>
<head></head>
<body>
<script>
// дни недели
days_labels = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
// название месяцев
months_labels = ['January', 'February', 'March', 'April',
'May', 'June', 'July', 'August', 'September',
'October', 'November', 'December'];
//кол-во дней каждого месяца
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
//текущая дата
today = new Date();
//конструктор
function Calendar(month, year){
this.month = (isNaN(month) || month == null) ? today.getMonth() : month;
this.year = (isNaN(year) || year == null) ? today.getFullYear() : year;
}
//отдаст контент контрола
Calendar.prototype.getHTML = function() {
return this.html;
}
//работа с датами месяца, генерация HTML
Calendar.prototype.generateHTML = function(){
// первый день месяца
var firstDay = new Date(this.year, this.month, 1);
var startingDay = firstDay.getDay();
// кол-во дней в этом месяце
var monthLength = days_in_month[this.month];
// високосный год
if (this.month == 1) {
if((this.year % 4 == 0 && this.year % 100 != 0) || this.year % 400 == 0){
monthLength = 29;
}
}
// заголовок календаря
var monthName = months_labels[this.month]
var html = '<table class="calendar-table">';
html += '<tr><th colspan="7">';
html += monthName + " " + this.year;
html += '</th></tr>';
html += '<tr class="calendar-header">';
for(var i =...