
์ค๋ช : ํ์ฌ ๋ ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋จํ ์บ๋ฆฐ๋๋ฅผ ํ์ํฉ๋๋ค.
ํํธ: innerHTML, ํ ์ด๋ธ ํ๊ทธ๋ฅผ ๋ฌธ์์ด๋ก ์กฐํฉํด์ ๋ง๋ค๋ฉด๋จ
๊ธฐ๋ณธ ์ ๊ณต ์ฝ๋:
<div id="calendar"></div>
<button id="generateCalendarButton">์บ๋ฆฐ๋ ์์ฑ</button>

1์ฐจ ์คํจ โ
// ํ์ฌ ๋ ์ง ์ ๋ณด
const now = new Date();
// console.log(now);
// ํ์ฌ ์ ๋ณด(์ฐ๋, ๋ฌ, ์ผ) ๋ณ์์ ์ ์ฅ
const year = now.getFullYear();
const month = now.getMonth() + 1;
const day = now.getDate();
// ์์ผ ๊ตฌํ๊ธฐ
const days = ['์ผ', '์', 'ํ', '์', '๋ชฉ', '๊ธ', 'ํ '];
console.log(typeof days[now.getDay()]);
//๋ง์ง๋ง ์ผ ๊ตฌํ๊ธฐ
const lastDay = new Date(year, month - 1, 0).getDate();
console.log(lastDay); //31
//์บ๋ฆฐ๋์ ํ์ฉํ ์๋ก์ด Date ๊ฐ์ฒด ๋ณต์ฌ
const calenderDate = new Date(now);
//์บ๋ฆฐ๋ ๊ทธ๋ฆฌ๋ ํจ์
function makeCalendar() {
const calendarCon = document.querySelector('#calendar');
calendarCon.innerHTML = ""; //์ด๊ธฐํ
let calendarInner = `
<table>
<tr>
<th>์ผ</th>
<th>์</th>
<th>ํ</th>
<th>์</th>
<th>๋ชฉ</th>
<th>๊ธ</th>
<th>ํ </th>
</tr>`;
// 1์ผ ์์ผ ์ธ๋ฑ์ค
const firstDayIndex = new Date(year, month - 1, 1).getDay();
//์บ๋ฆฐ๋ ๊ทธ๋ฆฌ๊ธฐ
//1์ผ๋ถํฐ ์์(์ด๊ธฐ๊ฐ)
let day = 1;
calenderDate.setDate(day);
// console.log(calenderDate);
//์ฒซ์ค ๋น์นธ + ๋ ์ง ์ฑ์ฐ๊ธฐ
calendarInner += `<tr>`;
//์ฒซ์ค ์์ฑ 7๋ฒ ๋ฐ๋ณต
for (let i = 0; i < 7; i++) {
if (i < firstDayIndex) {
calendarInner += ` <td> </td>`;
} else {
calendarInner += ` <td>${day}</td>`;
}
day++;
}
calendarInner += `</tr>`;
console.log(day);
// ๋จ์ ๋ ์ง ์ฑ์ฐ๊ธฐ
while (day <= lastDay) {
calendarInner += `<tr>`;
for (let i = 0; i < 7; i++) {
if (day > lastDay) { // 31์ผ๋ณด๋ค ํฌ๋ฉด ๋น์นธ
calendarInner += `<td> </td>`;
day++;
} else {
calendarInner += `<td>${day}</td>`;
day++;
}
}
calendarInner += `</tr>`;
}
calendarInner += `</table>`;
console.log(calendarInner);
calendarCon.innerHTML = calendarInner; //๊ทธ๋ฆฌ๊ธฐ
}
//๋ฒํผ ํด๋ฆญ์ ์บ๋ฆฐ๋ ๋ง๋ค๊ธฐ
const btnEl = document.querySelector('#generateCalendarButton');
btnEl.addEventListener('click', makeCalendar);
ํ์ด
๋ฌธ์ ์ (๊ฐ์ฌ๋ ํผ๋๋ฐฑ)

// ํ์ฌ ์ ๋ณด(์ฐ๋, ๋ฌ, ์ผ) ๋ณ์์ ์ ์ฅ
const year = now.getFullYear();
const month = now.getMonth() + 1;
const day = now.getDate();
๋ณ์ day๋ if ์กฐ๊ฑด์ด ์ฑ๋ฆฝํ์ง ์์์ ๋๋ง ์ฆ๊ฐ(++)ํด์ผ ํ๋ค.
โ ๋ฌ๋ ฅ ์ฒซ ์ค์์ 1์ผ์ ์์ผ๊ณผ ์ผ์นํ๋ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ๋๊น์ง๋ ๋น์นธ์ผ๋ก ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
//์ฒซ์ค ์์ฑ 7๋ฒ ๋ฐ๋ณต
for (let i = 0; i < 7; i++) {
if (i < firstDayIndex) {
calendarInner += ` <td> </td>`;
} else {
calendarInner += ` <td>${day}</td>`;
}
day++;
}
2์ฐจ ์ฑ๊ณต โ
// ํ์ฌ ๋ ์ง ์ ๋ณด
const now = new Date();
// console.log(now);
// ํ์ฌ ์ ๋ณด(์ฐ๋, ๋ฌ, ์ผ) ๋ณ์์ ์ ์ฅ
const year = now.getFullYear();
const month = now.getMonth();
const day = now.getDate();
// ์์ผ ๊ตฌํ๊ธฐ
const days = ['์ผ', '์', 'ํ', '์', '๋ชฉ', '๊ธ', 'ํ '];
console.log(typeof days[now.getDay()]);
//๋ง์ง๋ง ์ผ ๊ตฌํ๊ธฐ
const lastDay = new Date(year, month - 1, 0).getDate();
console.log(lastDay); //31
//์บ๋ฆฐ๋์ ํ์ฉํ ์๋ก์ด Date ๊ฐ์ฒด ๋ณต์ฌ
const calenderDate = new Date(now);
//์บ๋ฆฐ๋ ๊ทธ๋ฆฌ๋ ํจ์
function makeCalendar() {
const calendarCon = document.querySelector('#calendar');
calendarCon.innerHTML = ''; //์ด๊ธฐํ
let calendarInner = `
<table>
<tr>
<th>์ผ</th>
<th>์</th>
<th>ํ</th>
<th>์</th>
<th>๋ชฉ</th>
<th>๊ธ</th>
<th>ํ </th>
</tr>`;
// 1์ผ ์์ผ ์ธ๋ฑ์ค
const firstDayIndex = new Date(year, month, 1).getDay();
//์บ๋ฆฐ๋ ๊ทธ๋ฆฌ๊ธฐ
//1์ผ๋ถํฐ ์์(์ด๊ธฐ๊ฐ)
let day = 1;
calenderDate.setDate(day);
// console.log(calenderDate);
//์ฒซ์ค ๋น์นธ + ๋ ์ง ์ฑ์ฐ๊ธฐ
calendarInner += `<tr>`;
//์ฒซ์ค ์์ฑ 7๋ฒ ๋ฐ๋ณต
for (let i = 0; i < 7; i++) {
if (i < firstDayIndex) {
calendarInner += ` <td> </td>`;
} else {
calendarInner += ` <td>${day}</td>`;
day++;
}
}
calendarInner += `</tr>`;
console.log(day);
// ๋จ์ ๋ ์ง ์ฑ์ฐ๊ธฐ
while (day <= lastDay) {
calendarInner += `<tr>`;
for (let i = 0; i < 7; i++) {
if (day > lastDay) {
// 31์ผ๋ณด๋ค ํฌ๋ฉด ๋น์นธ
calendarInner += `<td> </td>`;
day++;
} else {
calendarInner += `<td>${day}</td>`;
day++;
}
}
calendarInner += `</tr>`;
}
calendarInner += `</table>`;
console.log(calendarInner);
calendarCon.innerHTML = calendarInner; //๊ทธ๋ฆฌ๊ธฐ
}
//๋ฒํผ ํด๋ฆญ์ ์บ๋ฆฐ๋ ๋ง๋ค๊ธฐ
const btnEl = document.querySelector('#generateCalendarButton');
btnEl.addEventListener('click', makeCalendar);
์๋ง ์ฌํ ํ์๋ ๋ฌธ์ ์ค ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ ธ๊ณ ๊ฐ์ฅ ๊ธด ๋ก์ง์ผ ๊ฒ ๊ฐ๋ค! ๋๊ตฐ๊ฐ์๊ฒ ์๊ณ ์ด๋ผํ ์ฝ๋๊ฒ ์ง๋งโฆ ๋ ๋๋ฌด ๋ฟ๋ฏํจ โจ Date ๊ฐ์ฒด๋ ํ ์ด๋ธํ๊ทธ๊ฐ ์ต์ํ์ง ์์์ ๋ช๊ฐ์ง ๊ฐ๋ ์ ์ฐธ๊ณ ํด์ ํ์๋ค. ์จ์ ํ ๋ด ํ์ ์๋์์ง๋งโฆ ๋ก์ง ์์ฒด๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์์๋ค๋ ๊ฑฐ์ ์๋ฏธ๋ฅผ ๋ฌ์ผ์ง ๐