classList.add() : 지정한 클래스 추가
classList.remove() : 지정한 클래스 제거
classList.contains() : 지정한 클래스가 있는지 확인
classList.toggle() : 지정한 클래스 존재시 제거 (false), 지정한 클래스 미존재시 추가 (true)
classList.item() : 인덱스를 이용하여 클래스 반환
classList.replace() : 존재하는 클래스를 지정한 클래스로 교체
아래 코드들을 살펴보면 이해가 빠를 것이다
/*HTML*/
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
/*JavaScript*/
/* ul태그 선택 */
const ul = document.querySelector('ul');
/* ul 클릭 했을 때 */
ul.addEventListener('click', (event) => {
/* 클릭한 태그명이 li일때 */
if (event.target.tagName === 'LI') {
/* li에 selected라는 클래스명이 포함되어있지 않다면 */
if (!event.target.classList.contains('selected')) {
/* li에 selected라는 클래스 추가 */
event.target.classList.add('selected');
/* li에 selected라는 클래스명이 포함되어 있다면 */
} else {
/* li에 selected라는 클래스명 제거 */
event.target.classList.remove('selected');
}
}
});
위 코드에서 알 수 있듯이
classList.add()는 지정한 클래스를 추가해주고classList.remove()는 지정한 클래스를 제거해준다.classList.contains()는 지정한 클래스가 요소에 존재하는지 확인해준다
HTML에서 가져오는 DOM 요소는 무조건 대문자로 가져오기때문에 li가 아닌 LI로 비교
참고로 ul을 클릭했는데 li에 event가 발생하는 이유는 이벤트 위임 (Bubbling) 때문이다
🥰 이벤트 위임, event.target에 대한 자세한 설명은 제 벨로그에 있습니다 🥰
위 코드를 classList.toggle()을 사용하면 더 간단해진다 아래 코드를 보자
/* HTML은 위와 동일 */
/* JavaScript */
const ul = document.querySelector('ul');
ul.addEventListener('click', (event) => {
if (event.target.tagName === 'LI') {
event.target.classList.toggle('selected');
}
});
위 코드에서 알 수 있듯이
classList.toggle()은 지정한 클래스가 존재한다면 클래스를 제거하고 false를 반환하고 지정한 클래스가 존재하지 않으면 클래스를 추가하고 true를 반환한다
/* HTML */
<ul>
<li class="li">1</li>
</ul>
/* javaScript */
const li = document.querySelector('.li');
li.addEventListener('click', (event) => {
li.classList.replace('li', 'changeLi');
});
클래스명이 li인 요소를 클릭하면 클래스명이 changeLi로 변경되는것을 확인할 수 있다
😍 코드 지적은 언제나 환영입니다. 읽어주셔서 감사합니다. 😍