728x90
가끔 이런 경우가 있죠. 예를 들어서, 1주차, 3주차, 4주차, 5주차의 날짜만 뽑아오고 싶을 때가 있다.
그럴 땐 $(".fc-week")
기준으로 DOM을 파고들어가면 된다.
(이 예제는 FullCalendar에서 .fc-week
DOM 구조를 기준으로 한 설명)
핵심 개념
.fc-week
: 한 주 단위의 row.fc-bg td.fc-day
: 요일별 날짜 셀.fc-other-month
: 현재 달이 아닌 날짜 셀data-date
: 날짜 정보가 담긴 속성
구현 코드
// 가져오고 싶은 주차
const wkArr = [1, 3, 4, 5];
const dates = [];
for (let j = 0; j < wkArr.length; j++) {
const weekIndex = wkArr[j] - 1;
for (let w = 0; w < 7; w++) {
const $wkDay = $(".fc-week").eq(weekIndex).find("div.fc-bg").find("td.fc-day").eq(w);
// 이번 달의 날짜만 (지난달, 다음달 날짜 제거)
if (!$wkDay.hasClass("fc-other-month")) {
// 주말 제외하고 싶다면 아래 조건 추가
if (!$wkDay.hasClass("fc-sat") && !$wkDay.hasClass("fc-sun")) {
dates.push($wkDay.data("date"));
}
}
}
}
console.log(dates); // 원하는 날짜 배열 출력
동작 방식 설명
wkArr
배열을 반복하며 주차(index)를 선택한다.- 각 주차 내에서
td.fc-day
를 7번(월~일) 순회. .fc-other-month
클래스를 가진 셀은 건너뛴다. (이번 달이 아님).fc-sat
,.fc-sun
클래스로 주말도 제외할 수 있다.- 남은 날짜에서
data-date
속성을 읽어와dates
배열에 넣는다.
예시 결과
예를 들어 2020년 12월에 대해 위 조건을 적용하면, 1, 3, 4, 5주차의 평일 날짜만 가져오게 된다.
728x90
반응형
'REACT' 카테고리의 다른 글
transform과 position: fixed 관계 설명 (0) | 2022.03.24 |
---|---|
Object – map()을 이용한 JSON 데이터 수정 (0) | 2021.10.14 |
AWS- appspec.yml root (0) | 2020.09.24 |
gapi oauth2 - google Calendar (0) | 2020.09.15 |
React / 환경변수 설정 DefinePlugin (0) | 2020.08.11 |