ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 11일 메이킹 챌린지 - 아홉수 (3일차)
    개발일지 2021. 7. 21. 20:36

    - 비만도 계산 , 결과 버튼을 캘린더 아래에 배치

    - 식단추천 추가

    3일차 상황

    <!Doctype html>
    <html lang="ko">
    
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
              integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
              crossorigin="anonymous">
    
        <!-- JS -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
                integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
                crossorigin="anonymous"></script>
    
        <!-- 구글폰트 -->
        <link href="https://fonts.googleapis.com/css?family=Stylish&display=swap" rel="stylesheet">
    
    
        <title>코시국에 운동하기</title>
    
        <!-- style -->
        <style type="text/css">
            * {
                font-family: "Stylish", sans-serif;
            }
    		
            .wrap {
                width: 900px;
                margin: auto;
            }		
    
            
    
            .textbox {
                width: 100%;
                overflow: hidden;
                font-size: 20px;
                padding: 8px 0;
            }
    
            .comment {
                color: blue;
                font-weight: bold;
            }
    
            
    
            #post-box {
                width: 500px;
                margin: 20px auto;
                padding: 50px;
                border: black solid;
                border-radius: 5px;
            }
    
            td {
                width: 50px;
                height: 50px;
                text-align: center;
                font-size: 20px;
                font-family: 굴림;
                border: 2px
                border-color: #3333FF;
                border-radius: 8px; /*모서리 둥글게*/
            }
    
            .check {
                width: 900px;
                height: 300px;
    			background-color: #E9ECEF;					
            }
    		
    		.infor-box {
                width: 280px;
                position: relative;
                display: block;
                left: 35%;
    			top: 20%;
            }
    		
    		.infor-box button {			
    			float: left;
    			margin-left: 40%;
            }
    		.btn botton{
    			float: left;
    			margin-right: 10px;
    			display: block;
    		}
            .smtitle {
                text-align: center;
                margin-top: 10px;
            }
    		
    		.result_total{
    			 width: 900px;
                height: 450px;
    			border: 1px solid blue;
    		}
        </style>
        <script>
            $(document).ready(function () {
                showArticles();
            });
    
            function openClose() {
                if ($("#post-box").css("display") == "block") {
                    $("#post-box").hide();
                    $("#btn-post-box").text("캘린더 열기");
                } else {
                    $("#post-box").show();
                    $("#btn-post-box").text("캘린더 닫기");
                }
            }
    
            function postArticle() {
                let url = $('#post-url').val()
                let comment = $('#post-comment').val()
    
                $.ajax({
                    type: "POST",
                    url: "/memo",
                    data: {url_give: url, comment_give: comment},
                    success: function (response) { // 성공하면
                        alert(response["msg"]);
                        window.location.reload()
                    }
                })
            }
    
            function showArticles() {
                $.ajax({
                    type: "GET",
                    url: "/memo",
                    data: {},
                    success: function (response) {
                        let articles = response['all_articles']
    
                    }
    
                })
            }
        </script>
        <script type="text/javascript">
            var today = new Date();//오늘 날짜//내 컴퓨터 로컬을 기준으로 today에 Date 객체를 넣어줌
            var date = new Date();//today의 Date를 세어주는 역할
            function prevCalendar() {//이전 달
                // 이전 달을 today에 값을 저장하고 달력에 today를 넣어줌
                //today.getFullYear() 현재 년도//today.getMonth() 월  //today.getDate() 일
                //getMonth()는 현재 달을 받아 오므로 이전달을 출력하려면 -1을 해줘야함
                today = new Date(today.getFullYear(), today.getMonth() - 1, today.getDate());
                buildCalendar(); //달력 cell 만들어 출력
            }
    
            function nextCalendar() {//다음 달
                // 다음 달을 today에 값을 저장하고 달력에 today 넣어줌
                //today.getFullYear() 현재 년도//today.getMonth() 월  //today.getDate() 일
                //getMonth()는 현재 달을 받아 오므로 다음달을 출력하려면 +1을 해줘야함
                today = new Date(today.getFullYear(), today.getMonth() + 1, today.getDate());
                buildCalendar();//달력 cell 만들어 출력
            }
    
            function buildCalendar() {//현재 달 달력 만들기
                var doMonth = new Date(today.getFullYear(), today.getMonth(), 1);
                //이번 달의 첫째 날,
                //new를 쓰는 이유 : new를 쓰면 이번달의 로컬 월을 정확하게 받아온다.
                //new를 쓰지 않았을때 이번달을 받아오려면 +1을 해줘야한다.
                //왜냐면 getMonth()는 0~11을 반환하기 때문
                var lastDate = new Date(today.getFullYear(), today.getMonth() + 1, 0);
                //이번 달의 마지막 날
                //new를 써주면 정확한 월을 가져옴, getMonth()+1을 해주면 다음달로 넘어가는데
                //day를 1부터 시작하는게 아니라 0부터 시작하기 때문에
                //대로 된 다음달 시작일(1일)은 못가져오고 1 전인 0, 즉 전달 마지막일 을 가져오게 된다
                var tbCalendar = document.getElementById("calendar");
                //날짜를 찍을 테이블 변수 만듬, 일 까지 다 찍힘
                var tbCalendarYM = document.getElementById("tbCalendarYM");
                //테이블에 정확한 날짜 찍는 변수
                //innerHTML : js 언어를 HTML의 권장 표준 언어로 바꾼다
                //new를 찍지 않아서 month는 +1을 더해줘야 한다.
                tbCalendarYM.innerHTML = today.getFullYear() + "년 " + (today.getMonth() + 1) + "월";
    
                /*while은 이번달이 끝나면 다음달로 넘겨주는 역할*/
                while (tbCalendar.rows.length > 2) {
                    //열을 지워줌
                    //기본 열 크기는 body 부분에서 2로 고정되어 있다.
                    tbCalendar.deleteRow(tbCalendar.rows.length - 1);
                    //테이블의 tr 갯수 만큼의 열 묶음은 -1칸 해줘야지
                    //30일 이후로 담을달에 순서대로 열이 계속 이어진다.
                }
                var row = null;
                row = tbCalendar.insertRow();
                //테이블에 새로운 열 삽입//즉, 초기화
                var cnt = 0;// count, 셀의 갯수를 세어주는 역할
                // 1일이 시작되는 칸을 맞추어 줌
                for (i = 0; i < doMonth.getDay(); i++) {
                    /*이번달의 day만큼 돌림*/
                    cell = row.insertCell();//열 한칸한칸 계속 만들어주는 역할
                    cnt = cnt + 1;//열의 갯수를 계속 다음으로 위치하게 해주는 역할
                }
                /*달력 출력*/
                for (i = 1; i <= lastDate.getDate(); i++) {
                    //1일부터 마지막 일까지 돌림
                    cell = row.insertCell();//열 한칸한칸 계속 만들어주는 역할
                    cell.innerHTML = i;//셀을 1부터 마지막 day까지 HTML 문법에 넣어줌
                    cnt = cnt + 1;//열의 갯수를 계속 다음으로 위치하게 해주는 역할
                    if (cnt % 7 == 1) {/*일요일 계산*/
                        //1주일이 7일 이므로 일요일 구하기
                        //월화수목금토일을 7로 나눴을때 나머지가 1이면 cnt가 1번째에 위치함을 의미한다
                        cell.innerHTML = "<font color=#F79DC2>" + i
                        //1번째의 cell에만 색칠
                    }
                    if (cnt % 7 == 0) {/* 1주일이 7일 이므로 토요일 구하기*/
                        //월화수목금토일을 7로 나눴을때 나머지가 0이면 cnt가 7번째에 위치함을 의미한다
                        cell.innerHTML = "<font color=skyblue>" + i
                        //7번째의 cell에만 색칠
                        row = calendar.insertRow();
                        //토요일 다음에 올 셀을 추가
                    }
                    /*오늘의 날짜에 노란색 칠하기*/
                    if (today.getFullYear() == date.getFullYear()
                        && today.getMonth() == date.getMonth()
                        && i == date.getDate()) {
                        //달력에 있는 년,달과 내 컴퓨터의 로컬 년,달이 같고, 일이 오늘의 일과 같으면
                        cell.bgColor = "#FAF58C";//셀의 배경색을 노랑으로
                    }
                }
            }
        </script>
    
    </head>
    
    <body>
    <div class="wrap">	
        <div class="jumbotron">		
            <h1 class="display-4">코시국에 운동하기!</h1>
            <p class="lead">코시국에 집콕하여 살이 늘어난분들에게 운동방법을 소개합니다.</p>
            <br>
            <button onclick="openClose()" id="btn-post-box" type="button" class="btn btn-primary">캘린더 닫기</button>
            
    		<br>
    		
    		<hr class="my-4">
            
        </div>
    
        <div id="post-box">
            <h3 align="center">캘린더</h3>
            <table id="calendar" border="3" align="center" style="border-color:#3333FF ">
                <tr><!-- label은 마우스로 클릭을 편하게 해줌 -->
                    <td><label onclick="prevCalendar()"><</label></td>
                    <td align="center" id="tbCalendarYM" colspan="5">
                        yyyy년 m월
                    </td>
                    <td><label onclick="nextCalendar()">>
    
                    </label></td>
                </tr>
                <tr>
                    <td align="center"><font color="#F79DC2">일</td>
                    <td align="center">월</td>
                    <td align="center">화</td>
                    <td align="center">수</td>
                    <td align="center">목</td>
                    <td align="center">금</td>
                    <td align="center"><font color="skyblue">토</td>
                </tr>
            </table>
            <script language="javascript" type="text/javascript">
                buildCalendar();//
            </script>
        </div>
        <div class="check">
    	<div class="infor-box">
                <h2 class="smtitle">비만도 계산</h2>
                <div class="input-group mb-3">
                    <span class="input-group-text" id="inputGroup-sizing-default">키</span>
                    <input type="text" class="form-control" aria-label="Sizing example input"
                           aria-describedby="inputGroup-sizing-default">
                </div>
                <div class="input-group mb-3">
                    <span class="input-group-text" id="inputGroup-sizing-default">몸무게</span>
                    <input type="text" class="form-control" aria-label="Sizing example input"
                           aria-describedby="inputGroup-sizing-default">
                </div>
    			 <button type="button" class="btn btn-secondary">조회</button>
    			
    			<br>
              
    		
            </p>
    
            </div>
    	</div>
    	
    	<div class="result_total">결과,식단,운동제안</div>
    </div>
    </body>
    
    </html>
Designed by Tistory.