자바스크립트 이벤트를 배울때 <button>태그에 onClick 이벤트 속성을 자바스크립트 함수와 연결하여 사용했지만 이것은 효과적인 코딩 방법이 아니였다.
HTML, CSS, JS는 각기다른 기능을 맡고 있기 때문에 연결되는 접점을 분리를 해주어야 효과적으로 관리할 수 있다. 이를 위해서 자바스크립트에서는 classList 함수를 사용하여 HTML 요소에 class 속성을 추가, 제거, 변경, 여부확인이 가능하다.
JavaScript - Element.classList
<div class="classN1 classN2 classN3"></div>
<script>
const test = document.querySelector(".classN1");
console.log(test.classList);
</script>
classList를 이용하여 해당 요소를 출력했을 때 DOMTokenList를 출력하며, 여기에는 배열의 형태로 클래스의 이름들이 저장되어있다.
ele.classList.add(String)
해당 요소의 클래스 속성값을 추가, 같은 클래스명 있는 경우 무시
const ele = document.querySelector(".classN");
ele.classList.add("classN2");
console.log(ele.classList);
//DOMTokenList(2) ["classN", "classN2", value: "classN classN2"]
ele.classList.remove(String)
클래스의 속성값을 체크하여 제거한다. 없는 경우 무시
const ele = document.querySelector(".classN");
ele.classList.remove("classN");
console.log(ele.classList);
// DOMTokenList [value: ""]
ele.classList.remove('target ClassName', 'remove ClassName')
이렇게도 사용가능
ele.classList.toggle(String)
클래스의 속성값이 없는 경우 추가하며 추가했을 경우 다시 제거 그리고 반복
ele.classList.contains(String)
해당 요소의 클래스의 유무를 확인하여 true 또는 false로 구분
const ele = document.querySelector(".classN");
console.log(ele.classList.contains("classN"));
// true
ele.classList.replace(str, str)
기존의 클래스 이름을 새로운 클래스 이름으로 변경
ele.classList.replace(이전 클래스 명, 변경될 클래스 명)
const ele = document.querySelector(".classN");
ele.classList.replace("classN", "NewClassN");
console.log(ele.classList);
// DOMTokenList ["NewClassN", value: "NewClassN"]