본문 바로가기
[LANG]/- JavaScript

[JS]Class제어

by Hapco 2022. 6. 2.
728x90
반응형

*목표 : 버튼을 누르면 해당하는 클래스를 추가

--클레스 제어 명령어

-className 속성 : 기존의 클래스까지 모두 덮어쓰기

=class라는 속성 대신 className으로 직접 class=""부분을 작성할수 있다.

=덮어씌우기 떄문에 돌아갈수 없다...

-classList 속성:

=모든 태그 객체는 classList라는 클래스 저장소를 가진다.

=명령이 다양해지며 기존 클래스와 충돌이 발생하지 않는다

=주로 사용하는 명령어가 될꺼같다.

 function success(){
            var h1 = document.querySelector(".title");
            //h1.className = "success";//덮어쓰기
            remove();
            h1.classList.add("success");//추가
        }
        function danger(){
            var h1 = document.querySelector(".title");
            //h1.className = "danger";//덮어쓰기
            remove();
            h1.classList.add("danger");//추가
        }
        function remove(){
            var h1 = document.querySelector(".title");
            //h1.className = "";//전체 삭제
            h1.classList.remove("success", "danger");//선택 삭제
        }
    </script>
</head>
<body>
    <button onclick="success();">success</button>
    <button onclick="danger();">danger</button>
    <button onclick="remove();">remove</button>
    <h1 class="title">Javascript Class Control</h1>
</body>
</html>
<style>
        .form-input {
            outline: none;
            background-repeat: no-repeat;
            background-size: contain;
            background-position: right;
        }
        .form-input.success {
            border-color: green;
            background-image: url("./image/success.jpg");
        }
        .form-input.fail {
            border-color: red;
            background-image: url("./image/fail.jpg");
        }
        span.success {
            color:green;
            display: none;
        }
        span.fail {
            color:red;
            display: none;
        }
        .form-input.success ~ span.success { 
            display:block;
        }
        .form-input.fail ~ span.fail {
            display: block;
        }
    </style>
    <script>
        function idCheck(){
            var idInput = document.querySelector("input[name=memberId]");
            var regex = /^[a-z][a-z0-9]{7,19}$/;

            idInput.classList.remove("success", "fail");
            if(regex.test(idInput.value)){//원하는 형식인 경우
                idInput.classList.add("success");
            }
            else{//원하는 형식이 아닌 경우
                idInput.classList.add("fail");
            }
        }        
    </script>
</head>
<body>
    <form>
        <div class="container-500 container-center">
            <div class="row">
                <label>아이디</label>
                <input type="text" name="memberId" class="form-input" autocomplete="off" oninput="idCheck();">
                <span class="success">멋진 아이디네요!</span>
                <span class="fail">아이디는 8~20자 이내 영문 소문자 + 숫자로 작성하세요!</span>
            </div>            
        </div>
    </form>
</body>
</html>

'[LANG] > - JavaScript' 카테고리의 다른 글

[JS] javascript vs html vs CSS 누가먼저 실행될까  (0) 2022.06.02
[JS]내부글자제어  (0) 2022.06.02
[JS]CheckBox , 체크박스  (0) 2022.06.02
[JS]Default object  (0) 2022.06.02
[JS]Default Event  (0) 2022.06.02

댓글