본문 바로가기
Web/JAVASCRIPT

[DOM] 제어 대상 찾기

by kkkkk1023 2023. 7. 5.

0. NodeList란?

: 대상 찾기 메소드의 값으로 반환되는 객체이다.

: html문서와 같은 문서 내의 모든 노드를 리스트 형태로 저장하고 있다.

 

NodeList


1. getElementsByTagName

: 문서 내에서 특정 태그에 해당되는 객체를 반환한다.

: getElementsByTagName은 인자로 전달된 태그명에 해당하는 객체들을 찾아서 그 리스트를 NodeList라는 유사 배열에 담아서 반환한다.

 

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<script>
    var lis = document.getElementsByTagName('li');
    // 문서에 있는 li 태그를 모두 lis에 Nodelist로 담는다.
    for(var i=0; i < lis.length; i++){
        if (i==0){ // 0번째 li 태그의 색상은 red로 변경
            lis[i].style.color='red'; 
        } else if (i==1){ // 1번째 li 태그의 색상은 blue로 변경
            lis[i].style.color='blue'; 
        } else{ // 2번째 li 태그의 색상은 green로 변경
            lis[i].style.color='green'; 
        }
    }
</script>
</body>
</html>

 

결과

 


만약 조회의 대상을 좁히려면 아래와 같이 특정 객체를 지정하면 된다

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<ol>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ol>
<script>
    var ul = document.getElementsByTagName('ul')[0];
    // 문서에 ul태그를 모두 조회하는데 거기서 첫번 째로 찾은 ul태그를 ul 변수에 저장
    var lis = ul.getElementsByTagName('li');
    // ul태그 내부에 있는 태그들중 모든 li 태그를 nodelist에 저장
    for(var i=0; lis.length; i++){
        lis[i].style.color='red';   
    }
</script>
</body>
</html>

 

 


2. getElementsByClassName

: 문서 내에서 특정 클래스 이름에 해당되는 객체를 반환한다.

 

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li class="active">CSS</li>
    <li class="active">JavaScript</li>
</ul>
<script>
    var lis = document.getElementsByClassName('active');
    // 문서에서 active로 클래스 이름이 설정된 대상을 모두 lis에 nodelist로 저장
    for(var i=0; i < lis.length; i++){
        lis[i].style.color='red';   
    }
</script>
</body>
</html>

결과


3. getElementById

: 문서 내에서 특정 아이디에 해당되는 객체를 반환한다.

: 성능면에서 가장 우수하다.

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li id="active">CSS</li>
    <li>JavaScript</li>
</ul>
<script>
    var li = document.getElementById('active');
    // 문서 중에 아이디 값이 active인 대상을 li에 저장 (id는 한번만 사용 가능하기에 nodelist에 따로 반환하지 않음.)
    li.style.color='red';
</script>
</body>
</html>

 


 

4. querySelector 

:  CSS 선택자에 매치되는 하나 이상의 element 중 첫 번째 항목을 반환한다.

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<ol>
    <li class="active">HTML</li>
    <li class="active">CSS</li>
    <li class="active">JavaScript</li>
</ol>
 
<script>
    var li = document.querySelector('li');
    li.style.color='red';
    var li = document.querySelector('.active');
    li.style.color='blue';
</script>
</body>
</html>

결과


5.querySelectorAll

: CSS 선택자에 매치되는 모든 element의 NodeList를 반환한다.

 

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<ol>
    <li>HTML</li>
    <li class="active">CSS</li>
    <li>JavaScript</li>
</ol>
 
<script>
    var lis = document.querySelectorAll('li');
    for(var name in lis){
        lis[name].style.color = 'blue';
    }
</script>
</body>

결과


 

'Web > JAVASCRIPT' 카테고리의 다른 글

동적 UI만들기 (alert)  (0) 2023.07.11
HTML에서 JS를 포함하는 방법  (0) 2023.07.09
Document Object Model(DOM)  (0) 2023.07.05
[BOM] 창 제어  (0) 2023.07.04
[BOM] Navigator 객체  (0) 2023.07.04