Languages/Javascript

[Javascript]querySelector 사용법

MoonSta 2022. 12. 21. 20:26

⚡️HTML요소 접근 방법

 컴포넌트 기반 웹 프로그래밍이 추세가 됨에 따라, 웹 개발을 하면서 컴포넌트에 대한 접근은 필수적입니다. 과거의 Javascript 에서는 컴포넌트에 접근할 수 있는 수단으로 제이쿼리를 사용하였다. 하지만 현재 Javascript가 현대화가 되면서, 자체적으로 DOM에 접근할 수 있는 메서드가 추가되어 제이쿼리 없이 제이쿼리가 할 수 있는 기능을 구현할 수 있다. 이번 포스팅에서는 Javascript의 querySelector에 대하여 작성하도록 하겠습니다. 

문서 객체 모델 구조도

🔥Document 구조

 위의 그림을 보면 문서(Document)의 전체 구조를 파악할 수 있습니다. 따라서 Javascript의 querySelector() 함수를 사용하게 되면 특정 선택자와 일치하는 요소에 접근하여 원하는 요소를 반환받을 수 있습니다.

querySelector 기본 형식

let element = baseNode.querySelector(selector);
//element : 반환값
//baseNode : 기준노드
//selector : CSS 선택자 또는 CSS 선택자 그룹


⚡️querySelector()

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>JavaScript</title>
  </head>
  <body>
    <div id="idSelector">
      <h1 class="testQuerySelector">mooonStar</h1>
    </div>
    <div class="classSelector">
      <h1 class="testQuerySelector">mooonStar</h1>
    </div>
    <script>
      document.querySelector('#idSelector').style.color = 'blue'; 
      document.querySelector('.classSelector').style.color = 'red';
    </script>
  </body>
</html>

위와 같은 코드를 작성하면 결과는 다음과 같습니다.

querySelector()의 결과

 

아이디 값으로 가져오기

document.querySelector('#idSelector').style.color = 'blue';  

클래스 명으로 가져오기

document.querySelector('.classSelector').style.color = 'red';

 

 


⚡️querySelectorAll()

 querySelector()는 요소 한 개만을 반환한다. 하지만 해당하는 모든 요소를 가져오고 싶으면 querySelectorAll()을 사용하여 List로 반환받을 수 있다. 사용법은 다음과 같습니다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>JavaScript</title>
  </head>
  <body>
    <div id="idSelector">
      <h1 class="testQuerySelector">mooonStar1</h1>
    </div>
    <div class="classSelector">
      <h1 class="testQuerySelector">mooonStar2</h1>
    </div>
    <script>
      var nodeList = document.querySelectorAll('.testQuerySelector'); 
      for(var i = 0; i < nodeList.length; i++) { 
         if(i == 0) {
           nodeList[i].style.color = 'red';
         } else {
           nodeList[i].style.color = 'blue';
         }
      }
    </script>
  </body>
</html>

 testQuerySelector 이라는 h1 클래스는 두 개가 있습니다. querySelectorAll('.testQuerySelector')로 반환받으면 nodeList에는 리스트 형태로 반환이 될 것입니다. 따라서 리스트를 순회하며 접근할 수 있게 됩니다.