JSFiddle - React, Tailwind, and code Playground
HTML
<div id="cal"></div>
JavaScript
function Calendar(id, year, month) {
var elem = document.getElementById(id)
var mon = month
var d = new Date(year, mon)
var e = new Date();
var weekDay = ["Sun", "Mon", "Tues", "Wed", "Thu", "Fri", "Sat"];
var months = ['January', 'Frebruary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var table = ['<table><tr>']
table.push('<th colspan = 4>' + months[mon] + '</th>' + '<th colspan = 3>' + year + '</th>' + '</tr><tr>')
for (var i = 0; i <= 6; i++) {
table.push('<th>' + weekDay[i] + '</th>')
}
table.push('</tr><tr>')
for (var i = 0; i < d.getDay(); i++) {
table.push('<td></td>')
}
while (d.getMonth() == mon) {
if (d.getDate() == e.getDate()) { // Condicional para dar destaque ao dia atual
table.push('<td class=day>' + d.getDate() + '</td>')
} else {
table.push('<td>' + d.getDate() + '</td>')
}
if (d.getDay() % 7 == 6) {
table.push('</tr><tr>')
}
d.setDate(d.getDate() + 1)
}
for (var i = d.getDay(); i < 7; i++) {
table.push('<td></td>')
}
table.push('</tr></table>')
elem.innerHTML = table.join('\n')
// mark this week
var today = (new Date()).getDate();
var tds = elem.querySelectorAll('td');
NodeList.prototype.filter = Array.prototype.filter;
var match = tds.filter(function (td) {
return td.innerHTML == today;
});
if (match) match[0].parentNode.style.outline = 'solid 1px red';
}
new Calendar("cal", 2015, 3);