[자바스크립트] HTML 요소의 클래스 추가, 제거 및 토글 방법

소요 시간: 5분

자바스크립트에서 HTML 요소에 클래스를 생성, 추가 및 제거하는 방법은 다음과 같습니다.


자바스크립트로 HTML 요소의 클래스 다루기

자바스크립트로 HTML 요소의 클래스를 다루는 것은 웹 개발에서 매우 흔한 작업입니다. 이를 통해 요소의 스타일을 동적으로 변경하거나 특정 행동을 유발할 수 있습니다. 자바스크립트로 HTML 요소의 클래스를 다루는 것에 대한 장단점을 다음과 같이 정리할 수 있습니다.

장점

동적인 스타일 변경:

자바스크립트를 사용하면 사용자의 행동(클릭, 마우스 오버 등)에 따라 실시간으로 스타일을 변경할 수 있습니다.

조건부 클래스 적용:

특정 조건에 따라 클래스를 추가하거나 제거할 수 있어 유연한 디자인이 가능합니다.

애니메이션과 효과:

클래스를 추가하거나 제거함으로써 CSS 트랜지션과 애니메이션을 쉽게 구현할 수 있습니다.

코드의 가독성 향상:

클래스를 사용하면 CSS와 자바스크립트의 역할을 명확하게 분리할 수 있어 코드의 가독성과 유지보수성이 향상됩니다.

단점

성능 문제:

많은 요소의 클래스를 자주 변경하면 리렌더링으로 인해 성능 저하가 발생할 수 있습니다.

복잡성 증가:

프로젝트가 커질수록 클래스를 관리하는 로직이 복잡해질 수 있으며, 여러 파일에서 같은 클래스를 다루는 경우 충돌이 발생할 수 있습니다.

디버깅 어려움:

클래스의 추가/제거로 인한 스타일 변화는 디버깅이 어려울 수 있으며, 특히 동적으로 많은 스타일 변경이 이루어지는 경우 문제를 추적하기 힘들 수 있습니다.

의도치 않은 사이드 이펙트:

클래스를 동적으로 변경하는 과정에서 의도치 않은 사이드 이펙트가 발생할 수 있으며, 이는 다른 스타일이나 동작에 영향을 미칠 수 있습니다.


실제 코드

1. 클래스 추가

HTML 요소:

먼저, 클래스가 추가될 HTML 요소를 준비합니다. 다음은 id가 myElement인 div 요소의 예시입니다:

<div id="myElement">Hello World!</div>

자바스크립트 코드:

자바스크립트에서는 document.getElementById 메서드를 사용하여 id가 myElement인 요소를 선택합니다. 그런 다음 classList.add 메서드를 사용하여 new-class 클래스를 추가합니다:

// 요소 선택
var element = document.getElementById("myElement");

// 클래스 추가
element.classList.add("new-class");

이 코드는 myElement 요소에 new-class 클래스를 추가합니다. 이 클래스는 미리 정의된 CSS 스타일을 통해 요소의 외형을 변경할 수 있습니다.

2. 클래스 제거

HTML 요소:

이제 new-class 클래스가 적용된 HTML 요소가 있다고 가정해봅니다:

<div id="myElement" class="new-class">Hello World!</div>

자바스크립트 코드:

다음으로, document.getElementById 메서드를 사용하여 myElement 요소를 선택한 후, classList.remove 메서드를 사용하여 new-class 클래스를 제거합니다:

// 요소 선택
var element = document.getElementById("myElement");

// 클래스 제거
element.classList.remove("new-class");

이 코드는 myElement 요소에서 new-class 클래스를 제거합니다. 클래스가 제거되면 해당 클래스에 적용된 스타일이 더 이상 요소에 적용되지 않습니다.

3. 클래스 토글

HTML 요소:

마지막으로, myElement 요소와 이를 토글할 버튼 요소를 준비합니다:

<div id="myElement">Hello World!</div>
<button id="toggleButton">Toggle Class</button>

자바스크립트 코드:

이제 document.getElementById 메서드를 사용하여 myElement와 toggleButton 요소를 선택합니다. 그런 다음 버튼에 클릭 이벤트 리스너를 추가하여 버튼을 클릭할 때마다 new-class 클래스를 토글합니다:

// 요소 선택
var element = document.getElementById("myElement");
var button = document.getElementById("toggleButton");

// 버튼 클릭 이벤트 리스너 추가
button.addEventListener("click", function() {
  // 클래스 토글
  element.classList.toggle("new-class");
});

이 코드는 버튼을 클릭할 때마다 new-class 클래스를 myElement 요소에 추가하거나 제거합니다. 클래스가 요소에 없으면 추가하고, 있으면 제거하는 방식입니다.

CSS 스타일 예시

마지막으로, new-class가 적용된 스타일을 정의할 수 있습니다. 예를 들어:

.new-class {
  background-color: yellow;
  font-size: 20px;
  padding: 10px;
  border: 2px solid black;
}

이 스타일 정의는 new-class 클래스가 추가된 요소에 다음과 같은 변경을 적용합니다:

이와 같이 자바스크립트를 사용하여 HTML 요소에 클래스를 동적으로 추가, 제거 및 토글할 수 있습니다. 이를 통해 사용자는 특정 이벤트(예: 버튼 클릭)에 따라 요소의 스타일을 변경할 수 있습니다.


자바스크립트 리스트