<html>
<head>
<meta charset="UTF-8">
<title>Calendar</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="calendar-div">
</div>
</body>
</html>
.currentmonth {
color: blue;
text-align: center;
}
.previous,
.next {
cursor: pointer;
border: 1px solid black;
}
.monthname {
background: red;
}
.weekdays {
border: 1px solid black;
background-color: grey;
}
.currentday {
border: 1px solid black;
color: #00FF00;
text-align: center;
}
table.calendar {
border: 2px solid black;
margin: 1em auto;
}
table.calendar td,
table.calendar th {
padding: 0.5em;
}
let weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'],
months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
lastDayInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
currentDate = new Date(),
currentMonth = currentDate.getMonth(),
day = currentDate.getDate(),
year = currentDate.getFullYear();
function makeCalendar(month) {
let nextDate = new Date(month + 1 + ' 1 ,' + year),
firstDay = nextDate.getDay(),
firstDay2 = firstDay,
daysInMonth = lastDayInMonth[month],
calendarView = "",
i = 1;
if (month == 1) {
if ((year % 100 !== 0) && (year % 4 === 0) || (year % 400 === 0)) {
lastDayInMonth[month] = 29;
}
}
while (firstDay > 0) {
calendarView += "<td class='premonth'></td>";
firstDay--;
}
while (i <= daysInMonth) {
if (firstDay2 > 6) {
firstDay2 = 0;
calendarView += "</tr><tr>";
}
if (i == day && month == currentMonth) {
calendarView += "<td class='currentday'>" + i + "</td>";
} else {
calendarView += "<td class='currentmonth'>" + i + "</td>";
}
firstDay2++;
i++;
}
var calendarTable = "<table class='calendar'> <tr class='month'><th class='previous' id='prev'><</th><th class = 'monthname' colspan='5'>" + months[month] + " " + 2017 + "</th><th class='next' id='next'>></th></tr>";
calendarTable += "<tr class='weekdays'>";
for (let i = 0; i < weekdays.length; i++) {
calendarTable += "<td>" + weekdays[i] + "</td>";
}
calendarTable += "</tr>";
calendarTable += "<tr>";
calendarTable += calendarView;
calendarTable += "</tr></table>";
return calendarTable;
}
let view = document.getElementById("calendar-div"),
cal = makeCalendar(currentMonth);
view.innerHTML = cal;
let previous = document.getElementById("prev").addEventListener('click', function() {
let prevMonth = currentMonth -= 1;
cal = makeCalendar(prevMonth);
})
Output
This bin was created anonymously and its free preview time has expired (learn why). — Get a free unrestricted account
Dismiss xKeyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |