선택자 (selector)

Posted by : on

Category : myconfused   html   javaScript


#여러 선택자들 html의 요소를 선택 할 때에는 여러 선택지가 있다. 보통 사용하는 것들은 크게 css선택자와, js에서 html의 요소를 선택하는 방법이 있다.

예를 들어

querySelector

css 선택자를 사용하여 문서에서 일치하는 요소들을 반환한다.

const element = document.querySelector('.myClass');
const elements = document.querySelectorAll('.myClass');

아래 선택자들은 html의 특정 속성을 가지고 id, class 등으로 선택한다.

const element = document.getElementById('myId');
const elements = document.getElementsByClassName('myClass');
const elements = document.getElementsByTagName('div');
const elements = document.getElementsByName('username');

그럼 뭐가 다를까?

css선택자는 NodeList를 반환하고,

속성 선택자는 HTMLCollection을 반환한다.

이게 뭐가 다른걸까..?

NodeList
  • 요소들을 특정 시점에 선택하여 작업
  • 새로운 요소가 추가되더라도 초기 선택된 요소들만 변경
HTMLCollection:
  • 선택된 요소들이 실시간으로 업데이트.
  • 새로운 요소가 추가되면 자동으로 컬렉션에 포함되어 스타일이 적용.

즉 NodeList

const item = document.querySelectorAll('.item');

//스타일 지정
item.forEach(element => {
    element.style.backgroundColor = 'yellow';
});
// 요소 추가
document.getElementById('addItemButton').addEventListener('click', () => {
    const newItem = document.createElement('div');
    newItem.className = 'item';
    newItem.textContent = 'New Item';
    document.body.appendChild(newItem);
    item.forEach(element => {
        element.style.backgroundColor = 'yellow';
    });
    // 새로운 요소는 배경색이 노란색으로 설정되지 않음
});

위에 아이템은 저 item에다 백그라운드를 yellow로 지정하고 저 item 클래스를 하나더 추가하면 yellow가 지정안된 item이 추가된다.

HTMLCollection

const item = document.getElementsByClassName('item');

document.getElementById('addItemButton').addEventListener('click', () => {
    const newItem = document.createElement('div');
    newItem.className = 'item';
    newItem.textContent = 'New Item';
    document.body.appendChild(newItem);
    Array.from(item).forEach(item => {
        item.style.backgroundColor = 'yellow';
    });
    // 새로운 요소는 배경색이 노란색으로 설정됨
});

위에 아이템은 추가할때마다 지정이된다.


About 유재석
유재석

개발자 유재석 입니다. Web Developer.

Email : jaeseok9405@gmail.com

Website : https://github.com/yoo94