JavaScript DOM 속성 조작
DOM에 요소의 속성 - class, attribute 등을 추가하거나 제거하는 방법을 확인해 보겠습니다. 요소의 속성을 조작함으로써 문서의 콘텐츠 및 디자인을 동적으로 변경할 수 있습니다. 더불어 HTML5에 추가된 data 속성의 조작에 대해서도 알아보겠습니다.
요소 스타일링
요소의 스타일을 바꾸고 싶다면 우선 CSS 클래스를 만들고, 만들어진 클래스를 스타일을 적용하고자 하는 요소에 지정하는 방식으로 사용합니다.
element.classList // 요소의 클래스를 나열
element.classList.add("className") // 클래스 추가
element.classList.remove("className") // 클래스 제거
element.classList.item( Number ) // 콜렉션의 인덱스를 이용하여 클래스 값을 반환
div.classList.toggle("visible"); // 클래스 값 토글
속성 조작하기
- getAttribute() - 어트리뷰트 값을 가져온다.
- hasAttribute() - 어트리뷰트 값을 가지고 있는지 검사한다.
- setAttribute() - 어트리뷰트에 값을 대입한다.
- removeAttribute() - 어트리뷰트를 제거한다.
- className - 클래스값을 가져오거나 변경한다.
- id - 아이디값을 가져오거나 변경한다.
let foo = document.getElementById("foo");
// 요소가 class 어트리뷰트를 가지고 있는지 검사한 후, 어트리뷰트 값을 가졍온다.
if (foo.hasAttribute("class")) {
var attr = foo.getAttribute("class");
}
// class 값을 변경한다. 존재하지 않으면 생성한다.
foo.className = "bar";
foo.setAttribute("class", "baz");
// class 속성을 제거한다
foo.removeAttribute("class");
data 속성
data 속성은 HTML5에 추가된 속성입니다. data속성을 이용하면 HTML 요소에 임의의 데이터를 간단하게 추가할 수 있으며, JavaScript나 CSS에서 손쉽게 해당 데이터를 조작할 수 있습니다.
<button data-action="foo">
Say Hello
</button>
const bar = document.querySelectorAll('[data-action="foo"]');
console.log(bar[0].dataset.action) // "foo"