yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse

개발 블로그

~2023.02/JS

id, class, css 선택자로 태그 선택하기

2022. 6. 1. 13:14

3. css 선택자로 태그 선택하기


<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>프로그래밍 언어</title>
</head>
<body>
  <h2 id="title">프로그래밍 언어</h2>
  <ol id="list">
    <li id="javascript" class="language">JavaScript</li>
    <li id="python" class="language">Python</li>
    <li id="java" class="language">Java</li>
    <li id="c" class="language">C</li>
    <li id="ruby" class="language">Ruby</li>
  </ol>
  <script src="index.js"></script>
</body>
</html>
  1. css 선택자를 활용해서 태그를 선택하는 메소드는 document 객체의 querySelector와 querySelectorAll 두 가지가 있다.
  2. 하나의 요소를 선택할 때는 querySelecor를 사용하는데, querySelector('#아이디')는 getElementById('아이디')와 같은 결과를 리턴한다.
    • 이때 querySelector 메소드를 활용하면 클래스나 태그 이름처럼 여러 개의 요소가 존재하는 선택자를 쓰더라도 그 중 가장 첫번째 요소 하나만 선택한다.
  3. 여러 개의 요소를 선택할 때는 querySelectorAll을 사용한다. 여러 개의 요소가 선택되기 때문에 NodeList라는 이름의 유사 배열에 각 요소가 담기게 된다.
    • 이때 존재하지 않는 요소를 선택할 경우, undefined나 null값이 리턴되는 것이 아니라 그냥 비어있는 NodeList가 리턴된다.
    • (getElementById와 동일하게 querySelector 메소드를 활용해 존재하지 않는 요소를 선택할 경우에는 null 값을 리턴한다.)
<li id="javascript" class="language">JavaScript</li>
  1. console.log(document.querySelectorAll('.language')[0]);  -->  (O)
    • language 클래스를 가진 태그들 중에서 0번 index를 선택하는 코드이다.
  2. console.log(document.querySelector('#list li'));  -->  (O)
    • querySelector 메소드를 활용할 경우, 해당되는 요소가 여러 개 있더라도 가장 첫 번째 요소만 선택된다.
    • 따라서 list id를 가진 요소의 자식 요소 중 가장 첫번째 li 태그를 선택하는 코드이다.
  3. console.log(documnet.querySelector('.language'));  -->  (O)
    • querySelector 메소드에 class 선택자를 활용할 경우, 여러 개의 클래스를 가진 요소들이 있더라도 가장 첫 번째 요소만 선택된다.
    • 따라서 language 클래스를 가진 요소들 중 가장 첫 번째 태그를 선택하는 코드이다.
  4. console.log(documnet.querySelectorAll('#javascript'));  -->  (X)
    • css 선택자를 보면 javascript라는 id를 가진 요소를 찾고 있는데 querySelectorAll 메소드를 활용하고 있다.
    • querySelectorAll 메소드를 활용할 경우 해당되는 요소가 하나 밖에 없더라도 요소가 하나인 NodeList를 반환한다.

 

4. getElement 방식 vs. querySelector 방식


  • 둘 중 어느 방법을 사용해도 특별히 문제 될 것은 없지만, 메소드 이름 자체가 짧기도 하고 하나의 메소드로 유연하게 태그 선택이 가능하다는 점에서 조금 더 활용도가 높은 querySelector 사용이 추천된다.
  • 다른 사람이 작성한 코드를 확인할 때를 대비해서 getElements를 통해 태그를 선택할 수 있다는 부분도 잊지 말고 꼭 기억해두자.

 

 

5. 총정리


1. 자바스크립트로 태그 선택하기

메소드 의미 결과
document.getElementById('id') HTML id속성으로 태그 선택하기 id에 해당하는 태그 하나
document.getElementsByClassName('class') HTML class속성으로 태그 선택하기 class에 해당하는 태그 모음(HTMLCollection)
document.getElementsByTagName('tag') HTML 태그 이름으로 태그 선택하기 tag에 해당하는 태그 모음(HTMLCollection)
document.querySelector('css') css 선택자로 태그 선택하기 css 선택자에 해당하는 태그 중 가장 첫번째 태그 하나
document.querySelectorAll('css') css 선택자로 태그 선택하기 css 선택자에 해당하는 태그 모음(NodeList)

2. 유사 배열이란?

  • 배열과 유사한 객체 ex) HTMLCollection, NodeList, DOMTokenList, ...

특징

  1. 숫자 형태의 indexing이 가능하다.
  2. length 프로퍼티가 있다.
  3. 배열의 기본 메소드를 사용할 수 없다.
  4. Array.isArray(유사배열)의 리턴값은 false다.

3. 이벤트와 이벤트 핸들링, 그리고 이벤트 핸들러

  • 이벤트 : 웹 페이지에서 발생하는 대부분의 일(사건)들 ex) 버튼 클릭, 스크롤, 키보드 입력, ...
  • 이벤트 핸들링 : 자바스크립트를 통해 이벤트를 다루는 일
  • 이벤트 핸들러 : 이벤트가 발생했을 때 일어나야하는 구체적인 동작들을 표현한 코드. 이벤트 리스너(Event Listener)라고도 부른다.

4. 이벤트 핸들러를 등록하는 2가지 방법

4-1. 자바스크립트로 해당 DOM 객체의 onclick 프로퍼티에 등록하기

const btn = document.querySelector('#myBtn');

btn.onclick = function() {
  console.log('Hello Codeit!');
};

4-2. HTML 태그의 onclick 속성에 바로 표시하기

<button id="myBtn" onclick="console.log('Hello Codeit!')">클릭!</button>

'~2023.02 > JS' 카테고리의 다른 글

HTML 속성 다루기 예제  (0) 2022.06.01
자바스크립트 요소 노드 추가하기  (0) 2022.06.01
유사배열(Array-Like Object)  (0) 2022.06.01
html/css_01  (0) 2022.05.02
프로그래밍 기초 in JS_[토픽3]프로그래밍과 데이터 in JS_자료형 심화&과제로 복습하기  (0) 2022.01.19
    '~2023.02/JS' 카테고리의 다른 글
    • HTML 속성 다루기 예제
    • 자바스크립트 요소 노드 추가하기
    • 유사배열(Array-Like Object)
    • html/css_01
    yooniiverse
    yooniiverse

    티스토리툴바