ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] DOM 다루기, 유효성 검사
    IT/부트캠프 2023. 5. 2. 15:35

    I. DOM 다루기

    1. create

    아무것도 연결되어 있지 않는 노드 그리기

    const tweetDiv = document.createElement('div')

     

    2. append

    부모 노드에 포함하기

    이때부터 엘리먼트 요소 확인 가능

    document.body.append(tweetDiv)

     

    3. read

    querySelector로 선택자를 조회한다.

    id가 container인 엘리먼트의 마지막 자식 요소로 tweetDiv를 추가한다.

    const container = document.querySelector('#container')
    const tweetDiv = document.createElement('div')
    container.append(tweetDiv)

     

     

    4. update

    const oneDiv = document.createElement('div');
    console.log(oneDiv) // <div></div>
    
    oneDiv.textContent = 'dev';
    console.log(oneDiv) // <div>dev</div>
    
    oneDiv.classList.add('tweet')
    console.log(oneDiv) // <div class="tweet">dev</div>
    
    const container = document.querySelector('#container')
    container.append(oneDiv)

     

     

    5. delete

    const container = document.querySelector('#container')
    const oneDiv = document.createElement('div')
    container.append(oneDiv)
    oneDiv.remove() // 이렇게 append 했던 요소를 삭제할 수 있다.

     

    자식클래스 이름이 tweet인 요소들만 삭제한다.

    const tweets = document.querySelectorAll('.tweet')
    tweets.forEach(function(tweet){
        tweet.remove();
    })

     

     

    II. 유효성검사

    index.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>유효성 검사</title>
        <link rel="stylesheet" href="global-style.css" />
        <link rel="stylesheet" href="style.css" />
        <link
          href="//spoqa.github.io/spoqa-han-sans/css/SpoqaHanSansNeo.css"
          rel="stylesheet"
          type="text/css"
        />
        <script src="validator.js"></script>
      </head>
    
      <body>
        <main>
          <img
            class="logo"
            src="./images/codestates-logo.png"
            alt="CODE_STATES_LOGO"
          />
    
          <fieldset>
            <input type="text" id="username" placeholder="아이디" />
          </fieldset>
    
          <div class="success-message hide">사용할 수 있는 아이디입니다</div>
          <div class="failure-message hide">아이디는 네 글자 이상이어야 합니다</div>
    
          <fieldset>
            <input type="password" id="password" placeholder="비밀번호" />
          </fieldset>
    
          <fieldset>
            <input
              type="password"
              id="password-retype"
              placeholder="비밀번호 확인"
            />
          </fieldset>
    
          <div class="mismatch-message hide">비밀번호가 일치하지 않습니다</div>
    
          <fieldset class="signup">
            <button>회원가입</button>
          </fieldset>
    
          <script src="script.js"></script>
        </main>
      </body>
    </html>

     

     

    script.js

    let elInputUsername = document.querySelector('#username')
    console.log(elInputUsername);
    
    let elFailureMessage = document.querySelector('.failure-message')
    let elSuccessMessage = document.querySelector('.success-message')
    
    let elPassword = document.querySelector('#password')
    let elPasswordRetype = document.querySelector('#password-retype')
    let elMismatchMessage = document.querySelector('.mismatch-message')
    
    
    elInputUsername.onkeyup = function(){
      if(isMoreThan4Length(elInputUsername.value)){
        elSuccessMessage.classList.remove('hide')
        elFailureMessage.classList.add('hide')
    
      }
      else {
        elSuccessMessage.classList.add('hide')
        elFailureMessage.classList.remove('hide')
      }
    }
    
    elPasswordRetype.onkeyup = function() {
      if (isMatch(elPassword.value, elPasswordRetype.value)) {
        elMismatchMessage.classList.add('hide');
      } else {
        elMismatchMessage.classList.remove('hide');
      }
    }
    
    function isMoreThan4Length(value) {
      return value.length >= 4
    }
    
    function isMatch (password1, password2) {
      return password1 === password2
    }

     

     

Designed by Tistory.