๐Ÿ“ ์˜ค๋Š˜ ํ•œ ๊ฒƒ

  1. getElementsByTagName()

  2. ๋‹ฌ๋ ฅ ๊ตฌํ˜„ ์ค‘


๐Ÿ“š ๋ฐฐ์šด ๊ฒƒ

๋‹ฌ๋ ฅ


๐Ÿ“Œ ์š”๊ตฌ ์‚ฌํ•ญ

  1. ์˜ค๋Š˜์˜ ํ˜„์žฌ ์š”์ผ ํ‘œ๊ธฐ
  1. ์˜ค๋Š˜์˜ ํ˜„์žฌ ์ผ ํ‘œ๊ธฐ
  1. ์˜ค๋Š˜์˜ ํ˜„์žฌ ์›” ํ‘œ๊ธฐ
  1. ์˜ค๋Š˜์˜ ํ˜„์žฌ ์—ฐ๋„ ํ‘œ๊ธฐ
  1. ์ผ,์›”,ํ™”,์ˆ˜,๋ชฉ,๊ธˆ,ํ†  ์š”์ผ ๋ผ๋ฒจ๋ง ํ‘œ๊ธฐ
  1. ํ˜„์žฌ ์›”์˜ 1์ผ์ด ๋ฌด์Šจ ์š”์ผ์ธ์ง€ ํŒ๋ณ„ํ•˜๊ณ , ํ•ด๋‹น ์š”์ผ ๋ผ๋ฒจ๋ง์— 1์ผ ํ‘œ๊ธฐํ•˜๊ธฐ
  1. ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊นŒ์ง€ ๋‹ฌ๋ ฅ์— ํ‘œ๊ธฐํ•˜๊ธฐ
  1. ์šฐ์ธก ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญ ํ–ˆ์„๋•Œ, ๋‹ค์Œ ๋‹ฌ์˜ ์š”์ผ ๋ฐ ๋‚ ์งœ ํ‘œ๊ธฐ
  1. ์ขŒ์ธก ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญ ํ–ˆ์„๋•Œ, ์ด์ „ ๋‹ฌ์˜ ์š”์ผ ๋ฐ ๋‚ ์งœ ํ‘œ๊ธฐ
  1. ํŠน์ • ๋‚ ์งœ๋ฅผ ํด๋ฆญ ํ–ˆ์„๋•Œ, ์ƒ๋‹จ์˜ ์š”์ผ ๋ฐ ๋‚ ์งœ ๋ฐ˜์˜ํ•˜๊ธฐ

๋‹จ, ํŠน์ด ์ผ€์ด์Šค์— ๋Œ€ํ•œ ๋Œ€์‘์€ ํ•˜์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์˜ˆ) ์œค๋…„, ๊ธฐ์›์ „ ๋“ฑ
๋‹ฌ๋ ฅ์€ ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฒซ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ javascript ์ž‘์„ฑ

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์–ด์ œ ์ž‘์„ฑํ–ˆ๋˜ HTML์—์„œ ์š”์ผ๊ณผ ๋‚ ์งœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” class๋ฅผ ์ˆ˜์ •ํ•ด์คฌ๋‹ค
( day-of-the-week๋ฅผ day๋กœ / day๋ฅผ date๋กœ )


1. ์ฒซ ๋ฒˆ์งธ ์š”๊ตฌ ์‚ฌํ•ญ

์˜ค๋Š˜์˜ ํ˜„์žฌ ์š”์ผ / ์ผ / ์›” / ์—ฐ๋„ ํ‘œ๊ธฐ

๐Ÿ’ก date().toString.split(' ', 4) ์ด์šฉ

// ์˜ค๋Š˜์˜ ํ˜„์žฌ [์š”์ผ, ์ผ, ์›”, ์—ฐ๋„] ํ‘œ์‹œ
var YMDD = new Date().toString();
var YMDDarray = YMDD.split(' ', 4);

console.log(YMDDarray); // (๋ฐฐ์—ด ์š”์†Œ ์ˆœ์„œ) ์š”์ผ, ์›”, ์ผ, ์—ฐ๋„

// ์š”์ผ
var day = document.querySelector('.day');
day.innerHTML = YMDDarray[0];

// ์ผ
var date = document.querySelector('.date');
date.innerHTML = YMDDarray[2];

// ์›”
var month = document.querySelector('.month');
month.innerHTML = YMDDarray[1];

// ์—ฐ๋„
var year = document.querySelector('.year');
year.innerHTML = YMDDarray[3];

๐Ÿ’ก ์ข€ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ

const YMDD = new Date();
const YMDDarray = YMDD.toString().split(' ', 4);

function showYMDD (selector, index) {
  document.querySelector(selector).innerHTML = YMDDarray[index];
}

showYMDD('.day', 0);
showYMDD('.date', 2);
showYMDD('.month', 1);
showYMDD('.year', 3);

2. ๋‘ ๋ฒˆ์งธ ์š”๊ตฌ ์‚ฌํ•ญ

ํ˜„์žฌ ์›”์˜ 1์ผ์ด ๋ฌด์Šจ ์š”์ผ์ธ์ง€ ํŒ๋ณ„ํ•˜๊ณ , ํ•ด๋‹น ์š”์ผ ๋ผ๋ฒจ๋ง์— 1์ผ ํ‘œ๊ธฐํ•˜๊ธฐ

const currYear = YMDD.getFullYear();
const currMonth = YMDD.getMonth();

const currMonthFirst = new Date(currYear, currMonth, 1); // ํ˜„์žฌ ์›”์˜ 1์ผ
const currMonthFirstDay = currMonthFirst.getDay(); // ใ€ƒ ์˜ ์š”์ผ

// โ• ์•„๋ž˜์—์„œ ์„ธ ๋ฒˆ์งธ ์š”๊ตฌ ์‚ฌํ•ญ์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ˆ๊นŒ ์ด ๋ถ€๋ถ„์ด ํ•„์š”๊ฐ€ ์—†์–ด์กŒ๋‹ค. ๋ถ„๋ช… ์ด๊ฒƒ๋„ ์š”๊ตฌ ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ ๋’ค์—์„œ ๋ง‰ํž์ง€๋„ ๋ชจ๋ฅด๊ฒ ...
if (currMonthFirstDay === 3) {
  document.querySelector('#day3').innerHTML = '1'; // ์—ฌ๊ธฐ์„œ 1์€ string์ด๋‹ค
}

3. ์„ธ ๋ฒˆ์งธ ์š”๊ตฌ ์‚ฌํ•ญ

ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊นŒ์ง€ ๋‹ฌ๋ ฅ์— ํ‘œ๊ธฐํ•˜๊ธฐ

๐Ÿ’ก ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ

  • ๋ชจ๋“  <td>์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด getElementsByTagName() ์ด์šฉ

  • ์ˆซ์ž๋ฅผ 1 ~ 31, 1 ~ 30, 1 ~ 28 ๊นŒ์ง€ ์ ์€ ํŒŒ์ผ 3๊ฐœ๋ฅผ ๋งŒ๋“  ํ›„ fetch API๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ for ๋ฐ˜๋ณต๋ฌธ๊ณผ innerHTML์„ ์ด์šฉํ•ด < td >์— ํ•˜๋‚˜์”ฉ ์ง‘์–ด๋„ฃ์Œ

  • ํ˜„์žฌ ์›”์ด ์‹œ์ž‘ํ•˜๋Š” ์š”์ผ(์ฆ‰, < td >)๋ถ€ํ„ฐ 1์„ ์ง‘์–ด๋„ฃ๊ธฐ ์œ„ํ•ด i์— currMonthFirstDay๋ฅผ ๋”ํ•ด์คŒ

// ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ (30์ธ์ง€ 31์ธ์ง€ 28์ธ์ง€)
const currMonthLast = new Date (currYear, currMonth+1, 0);
const currMonthLastDate = currMonthLast.getDate();

// ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊นŒ์ง€ ๋‹ฌ๋ ฅ์— ํ‘œ์‹œ
// ์ฆ‰, ์–ด๋–ป๊ฒŒ <td> ์—๋งŒ 1 ~ 31(30)(28)๊นŒ์ง€ ๋„ฃ์„ ์ˆ˜ ์žˆ์„๊นŒ?

const td = document.getElementsByTagName('td');

fetch('calendarDate30').then(function(response){
  response.text().then(function(text){
    const textArray = text.split(',');
    for (let i = 0; i < textArray.length; i++) {
      td[i+currMonthFirstDay].innerHTML = textArray[i];
    }
  })
});

๐Ÿ’ก ๋ฌธ์ œ ๋ฐœ์ƒ

  • ์œ„์ฒ˜๋Ÿผ ํ•˜๋‹ˆ๊นŒ ๋‘ ๋ฒˆ์งธ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ด๋ฏธ ๊ตฌํ˜„ํ•ด๋†จ๋˜ ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ (๋‹ค๋ฅธ ์›”์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ํ•„์š”ํ•œ ์ฝ”๋“œ ๊ฐ™์€๋ฐ) ์“ฐ์ด์งˆ ์•Š๊ณ  ์žˆ์—ˆ๋‹ค
// ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ (30์ธ์ง€ 31์ธ์ง€ 28์ธ์ง€)
const currMonthLast = new Date (currYear, currMonth+1, 0);
const currMonthLastDate = currMonthLast.getDate();

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊ฐ€ 30์ธ์ง€ 31์ธ์ง€ 28์ธ์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ ฅ์— ๋‚ ์งœ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋„๋ก if ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค

  • ์ฒ˜์Œ์— if ์กฐ๊ฑด๋ฌธ ์•ˆ์— fetch API๋ฅผ ์ผ์ผ์ด ๋‹ด์•„์„œ 3๊ฐœ์˜ ๊ตฌ๋ฌธ์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ฐ€ fetch API๋ฅผ ๋”ฐ๋กœ ๋นผ๋‚ด์„œ insert๋ผ๋Š” ํ•จ์ˆ˜ ์•ˆ์— ๋‹ด์•„์ฃผ์—ˆ๋‹ค

๐Ÿ’ก ์ˆ˜์ •ํ•œ ์ฝ”๋“œ

// 3. ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊นŒ์ง€ ๋‹ฌ๋ ฅ์— ํ‘œ๊ธฐํ•˜๊ธฐ

// ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ (31์ธ์ง€ 30์ธ์ง€ 28์ธ์ง€)
const currMonthLast = new Date(currYear, currMonth+1, 0);
const currMonthLastDate = currMonthLast.getDate();

// ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊นŒ์ง€ ๋‹ฌ๋ ฅ์— ํ‘œ์‹œ
// ์ฆ‰, ์–ด๋–ป๊ฒŒ <td> ์—๋งŒ 1 ~ 31(30)(28)๊นŒ์ง€ ๋„ฃ์„ ์ˆ˜ ์žˆ์„๊นŒ?

// ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊ฐ€ 31์ธ ๊ฒฝ์šฐ
// ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊ฐ€ 30์ธ ๊ฒฝ์šฐ
// ํ˜„์žฌ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๊ฐ€ 28์ธ ๊ฒฝ์šฐ

function insert (lastDayFile) {
  const td = document.getElementsByTagName('td');
  fetch(lastDayFile).then(function(response){
    response.text().then(function(text){
      const textArray = text.split(',');
      for (let i = 0; i < textArray.length; i++) {
        td[i+currMonthFirstDay].innerHTML = textArray[i];
      }
    })
  });
}

if (currMonthLastDate === 30) {
  insert('calendarDate30');
}

if (currMonthLastDate === 31) {
  insert('calendarDate31');
}

if (currMonthLastDate === 28) {
  insert('calendarDate28');
}

๐Ÿ’ก ์ข€ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ

  • ์œ„์—์„œ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ๋˜ calendarDate30๊ณผ 28 ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ , 31 ํŒŒ์ผ์—์„œ split์˜ 2๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ฐฐ์—ด๋กœ ์š”์†Œ๋ฅผ ์ž˜๋ผ์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑธ๋กœ ๋ฐ”๊ฟˆ

  • if ์กฐ๊ฑด๋ฌธ ์ •๋ฆฌ

const currMonthLast = new Date (currYear, currMonth+1, 0);
const currMonthLastDate = currMonthLast.getDate();

function insert (limit) {
  const td = document.getElementsByTagName('td');
  fetch('calendarDate31').then(function(response){
    response.text().then(function(text){
      const textArray = text.split(',', limit);
      for (let i = 0; i < textArray.length; i++) {
        td[i+currMonthFirstDay].innerHTML = textArray[i];
      }
    })
  });
}

if (currMonthLastDate === 31) {
  insert(31);
} else if (currMonthLastDate === 30) {
  insert(30);
} else {
  insert(28);
}

โœจ ๋‚ด์ผ ํ•  ๊ฒƒ

  1. ๋‹ฌ๋ ฅ ๊ตฌํ˜„ ์ด์–ด์„œ
    ์ œ๋Œ€๋กœ ์ž˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ๊นŒ ์• ๋‹น์ดˆ ์ž˜๋ชป ๋“  ๊ธธ๋งŒ ์•„๋‹ˆ๊ธฐ๋ฅผ
profile
dev log

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด

Powered by GraphCDN, the GraphQL CDN