Javascript

이용약관

오시리엔 2023. 9. 22. 09:39
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>이용약관</title>

    <!-- css 파일을 불러오는 코드 -->

    <!-- 아이콘 사용을 위한 Font Awesome 6 CDN -->
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">

    <!-- 구글 웹 폰트 사용을 위한 CDN -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

    <!-- 내가 만든 CSS 파일-->
    <link rel="stylesheet" type="text/css" href="./css/reset.css">
    <link rel="stylesheet" type="text/css" href="./css/commons.css">
    <link rel="stylesheet" type="text/css" href="./css/test.css">
    <style>

    </style>

    <!-- javascript 작성 공간 -->
    <script>
        function refreshCheckbox(tag) {
            //<계획>
            //1. 체크된 체크박스를 확인
            //2-1. 전체가 체크된 경우 개별항목을 모두 체크
            //2-2. 개별항목이 체크된경우 전체 체크여부를 확인

            //console.log(tag);
            //console.log(tag.classList);
            //console.log(tag.classList.contains("check-item"));

            if(tag.classList.contains("check-all")) {//2-1
                var itemList = document.querySelectorAll(".check-item");
                var allList = document.querySelectorAll(".check-all");

                //tag의 체크 상태에 따라 allList와 itemList를 모두 체크/해제
                for(var i=0; i < itemList.length; i++) {
                    itemList[i].checked = tag.checked;
                }
                for(var i=0; i < allList.length; i++) {
                    allList[i].checked = tag.checked;
                }

                //버튼 처리
                var btn = document.querySelector("#next-btn");
                btn.disabled = !tag.checked;
            }
            else if(tag.classList.contains("check-item")) {//2-2
                //개별항목이 모두 체크되어 있는지를 알아야 함
                //- itemList - 전체 체크박스 목록
                //- checkedItemList - 체크된 체크박스 목록
                var itemList = document.querySelectorAll(".check-item");
                var checkedItemList = document.querySelectorAll(".check-item:checked");
                var allChecked = itemList.length == checkedItemList.length;

                var allList = document.querySelectorAll(".check-all");
                for(var i=0; i < allList.length; i++) {
                    allList[i].checked = allChecked;
                }

                //버튼 처리
                var btn = document.querySelector("#next-btn");
                btn.disabled = !allChecked;
            }
        }
    </script>
</head>
<body>
    <div class="container w-600">
        <div class="row">
            <h1>이용약관</h1>
        </div>
        <div class="row left">
            <label>
                <input type="checkbox" class="check-all" oninput="refreshCheckbox(this)"> 모두 동의합니다
            </label>
        </div>

        <div class="row left">
            <textarea class="form-input w-100" readonly>dummy text</textarea>
        </div>
        <div class="row left">
            <label>
                <input type="checkbox" class="check-item" oninput="refreshCheckbox(this)"> 동의합니다
            </label>
        </div>
        <div class="row left">
            <textarea class="form-input w-100" readonly>dummy text</textarea>
        </div>
        <div class="row left">
            <label>
                <input type="checkbox" class="check-item" oninput="refreshCheckbox(this)"> 동의합니다
            </label>
        </div>
        <div class="row left">
            <textarea class="form-input w-100" readonly>dummy text</textarea>
        </div>
        <div class="row left">
            <label>
                <input type="checkbox" class="check-item" oninput="refreshCheckbox(this)"> 동의합니다
            </label>
        </div>
        <div class="row left">
            <textarea class="form-input w-100" readonly>dummy text</textarea>
        </div>
        <div class="row left">
            <label>
                <input type="checkbox" class="check-item" oninput="refreshCheckbox(this)"> 동의합니다
            </label>
        </div>
        <hr>
        <div class="row left">
            <label>
                <input type="checkbox" class="check-all" oninput="refreshCheckbox(this)"> 모두 동의합니다
            </label>
        </div>
       
        <div class="row">
            <button class="btn btn-positive w-100" disabled
                                            id="next-btn">다음 단계로 이동</button>
        </div>
    </div>
</body>
</html>

'Javascript' 카테고리의 다른 글

이벤트 콜백(callback)  (0) 2023.09.26
예상 결제 금액 계산  (1) 2023.09.25
체크박스 제어  (0) 2023.09.21
내장객체 연산방법  (0) 2023.09.20
자바스크립트 내장 객체  (0) 2023.09.18