ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 210929_calendar
    JavaScript 2021. 9. 29. 15:13

    css

    @charset "UTF-8";

    @import url('https://fonts.googleapis.com/css2?family=Single+Day&display=swap');

    .seldate select,#calview{

    font-family: 'Single Day';

     

    font-size: 1.4em;

    width: 110px;

    }

     

    .seldate{

    margin-left: 300px;

    }

     

    #calview{

    margin-left: 250px;

    margin-top: 30px;

    }

     

    #calview table{

    border-collapse: collapse;

    width: 800px;

    }

     

    #calview table tr{

    height: 60px;

    }

     

    #calview table th{

    border: 1px solid gray;

    background-color: #afeeee;

    color: black;

    font-family: 'Single Day';

    font-size: 13pt;

    }

     

    #calview table td{

    border: 1px solid gray;

    font-family: 'Single Day';

    text-align: center;

    line-height: 60px;

    font-size: 13pt;

    }

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     

    html

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>Insert title here</title>

    <link rel="stylesheet" type="text/css" href="../css/calstyle.css">

     

    <script type="text/javascript">

    window.onload=function(){

     

    //캘린더메서드 호출

    calendarView(year,month);

     

    //버튼이벤트

    document.getElementById("btnview").onclick=function(){

     

    var myyear=document.getElementById("selyear").value;

    var mymonth=document.getElementById("selmonth").value;

     

    console.log(myyear,mymonth);

     

    //캘린더메서드 호출

    calendarView(myyear, mymonth);

    }

    }

     

    //캘린더메서드 생성

    function calendarView(year,month) {

     

    alert(new Date(year,month-1,1));

     

    //전달받은 년도와 월의 1일의 요일을 구해야 한다

    var currDate=new Date(year,month-1,1);  //전달받을 때 +1이 된 month를 받아서 -1해야함

    var week=currDate.getDay();  //요일

     

    console.log(week);  //요일숫자: 일0 ~ 토6

     

    var s="";

    s+="<table>";

    s+="<caption><b>"+year+"년 "+month+"월 달력</b></caption>";

    s+="<tr>";

    s+="<th>일</th><th>월</th><th>화</th><th>수</th><th>목</th><th>금</th><th>토</th>"

    s+="</tr>";

     

    //요일숫자만큼 빈칸(td) 생성

    s+="<tr>";

    for(var i=1;i<=week;i++)

    {

    s+="<td></td>";

    }

     

    //해당월이 몇일까지 있는지 endday를 구한다

    //그다음 1일부터 endday까지 출력하는데 토요일출력후 tr 닫고 다시 tr 열기

    var endday=0;

     

    //그냥 month 쓰면 문자로 인식하기에 parseInt 캐스팅

    switch(parseInt(month)) {

    case 2:

    //2월..윤달,윤년

    if(year%4==0 && year%100!=0 || year%400==0)  //윤년 공식

        endday=29;

    else 

    endday28;

    break;

    case 4: case 6: case 9: case 11:

    endday=30;

    break;

    default:

    endday=31;

    }

    console.log(endday);

     

    //몇주일인지

    for(var i=1;i<=endday;i++)

    {

    week++;

     

    //주말 토,일은 글자색 빨강으로

    if(week%7==1 || week%7==0)

    {

    s+="<td style='color:red;'>"+i+"</td>";

    } else {

    s+="<td>"+i+"</td>";

    }

     

        if(week%7==0)

        {

        s+="</tr><tr>";

        }

    }

     

    //토요일에서 끝난 경우는 바로 tr 닫고 토요일에서 끝나지 않을 경우 나머지 빈칸 그리기

    if(week%7==0)

    {

    s+="</tr>";

    } else {

     

    while(true){

    week++;

    s+="<td></td>";

     

    if(week%7==0)

    {

    s+="</tr>";

    break;

    }

    }

    }

    s+="</table>";

     

    document.getElementById("calview").innerHTML=s;

    }

    </script>

    </head>

    <body>

    <script type="text/javascript">

     

    //현재날짜구하기

    var date=new Date();

     

    var year=date.getFullYear();

    var month=date.getMonth()+1;

    console.log(year,month);

    </script>

     

    <div class="select">

      <select id="selyear">

        <script type="text/javascript">

          var s="";  //초기값

          for(var y=year;y>=1950;y--)

          {

          s+="<option>"+y+"</option>";  //초기값 준 s에 누적

          }

          document.write(s);

        </script>

      </select>

      

      <b></b>&nbsp;&nbsp;&nbsp;

      

      <select id="selmonth">

        <script type="text/javascript">

          var s="";

          for(var m=1;m<=12;m++)

          {

          if(m==month)

          {

          s+="<option selected>"+m+"</option>";

          } else

           s+="<option>"+m+"</option>";

          }

          document.write(s);

        </script>

      </select>

      

      <b></b>&nbsp;&nbsp;&nbsp;

     

      <button type="button" id="btnview">달력확인</button>

     

    </div>

     

    <div id="calview"></div>

    </body>

    </html>

     

    'JavaScript' 카테고리의 다른 글

    210929_jquery,canvas(그림판)  (0) 2021.09.29
    210929_canvas  (0) 2021.09.29
    210929_form,setInterval  (0) 2021.09.29
    210928_image,onkeyup(위치변경)  (0) 2021.09.28
    210928_time,setInterval,setTimeout,image  (0) 2021.09.28

    댓글

Designed by Tistory.