라라리라

2023.10.05 / Step 6 [DOM_달력1단계] - 코딩 63 일차 본문

코딩/2023 JavaScript DOM

2023.10.05 / Step 6 [DOM_달력1단계] - 코딩 63 일차

헤실 2023. 10. 5. 17:38
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body onload="load()">
<style>
        #header{
            text-align: center;
        }
        table, td, tr{
            border-collapse: separate;
            margin: auto;
            border-spacing: 2px;
        }
        td{
            width: 60px;
            height: 50px;
            text-align: center;
            border: 1px solid black;
        }
</style>
        <div id="header">
            <table>
                <tr>
                    <td colspan="4"><span id="today"></span></td>
                </tr>
                <tr>
                    <td><span id="year_"></span></td>
                    <td><span id="month_"></span></td>
                    <td><button onclick="pri()"></button></td>
                    <td><button onclick="next()"></button></td>
                </tr>
            </table>
        </div>
        <div id="center"></div>
        <div id="footer"></div>
<script>
    let $center = document.querySelector(`#center`)
    let now = new Date();
    let $List = [];
    let year = now.getFullYear();
    let month = now.getMonth();
    let hour = now.getHours();
    let date = now.getDate();
    let day = now.getDay();
    let num = 0;
    ///////////////////////////
    let cal_start = new Date(year, month, 1);
   
    let cal_daystart = cal_start.getDay();
    let cal_datestart = cal_start.getDate();

    let cal_end = new Date(year, month + 1, 0);
    let cal_dayend = cal_end.getDay();
    let cal_dateend = cal_end.getDate();

    console.log(cal_daystart)
    console.log(cal_datestart)
    console.log(cal_dayend)
    console.log(cal_dateend)
////////////////////////////////////
    let size = 7;
    let dayid = [``, ``, ``, ``, ``, ``, ``];
    today.innerHTML = `${year}${month + 1}${date}${dayid[day]}요일`
    let $table = document.createElement(`table`);
    for(let i = 0; i < 1; i++){
        let $tr = document.createElement(`tr`);
        for(let j = 0; j < size; j++){
        let $td = document.createElement(`td`);
        $td.innerText = dayid[j];
        $tr.append($td);
        }
        $table.append($tr);
        $center.append($table);
    }
    for(let i = 0; i < 6; i++){
        $tr = document.createElement(`tr`);
        let $temp = [];
        for(let j = 0; j < size; j++){
        $td = document.createElement(`td`);
        $temp.push($td);
        $tr.append($td);
        }
        $List.push($temp);
        $table.append($tr);
    }
    //오늘 인덱스 구하기?  i 값 = parseInt(date / 7)? x값 = day   today_index = parseint(date / 7)
   
    function load(){
   
    year_.innerHTML = year;
    month_.innerHTML = month + 1;
    let today_index = $List[parseInt(date/7)][day];
    today_index.innerHTML = date;
    let start_index = $List[parseInt(cal_datestart / 7)][cal_daystart]
    let id = 0;
    for(let i = 1; i <= cal_dateend; i++){ //cal_dateend = 31;
        cal_start = new Date(year, month, i); //2023 8 1 //2023 8 2
        cal_daystart = cal_start.getDay(); // 2(화) // 3(수)
        if(cal_daystart == 0){id++}; //cal_daystart가 0이면 (일요일이면) 한줄내리기
        let start_index = $List[id][cal_daystart] //시작인덱스는 [ID][cal_daystart]

        start_index.innerHTML = i; // start_index의 값 = i
    }
}
    function pri(){ // 이전 달력
        for(let i = 0; i < 6; i++){ //달력 내용 초기화
            for(let j = 0; j < size; j++){
                $List[i][j].innerText = ``;
            }
        }
        month--; //월 --;
        if(month == -1){ //월이 -1(0월)이 되면
        month = 11; //11(12월)로 변경
        year--; //년도 -1;
        }
        load();
    }
    function next(){ //다음월
        for(let i = 0; i < 6; i++){ //달력 초기화
            for(let j = 0; j < size; j++){
                $List[i][j].innerText = ``; //기존내용삭제
            }
        }
        month++; //월++;
        if(month == 12){ //12(13월일시)
        month = 0; //0(1월)로 변경
        year++ //+ 년도 증가
    }
        load();
    }
   
</script>
</body>
</html>
Document