DOM(Document Object Model) – DOM 조작 – 0 – 요소의 선택과 조작
소제목: DOM(Document Object Model)이란 무엇인가요?
DOM(Document Object Model)은 웹 페이지의 구조를 표현하고 조작하기 위한 프로그래밍 인터페이스입니다. 웹 브라우저가 HTML 문서를 해석하고 이를 트리 구조로 변환하여 제공합니다. 이 트리 구조에서 각 HTML 요소는 객체로 표현되며, 이를 통해 자바스크립트를 사용하여 웹 페이지를 동적으로 변경하고 조작할 수 있습니다.
소제목: 요소의 선택하기
DOM을 사용하여 웹 페이지의 요소를 선택하는 방법에 대해 알아보겠습니다. 요소를 선택하기 위해서는 해당 요소를 식별하는 방법을 사용합니다. 일반적으로 사용되는 선택자는 다음과 같습니다.
-
태그 이름으로 선택하기: 특정 태그를 가진 모든 요소를 선택할 수 있습니다. 예를 들어,
document.getElementsByTagName('div')
는 페이지의 모든<div>
요소를 선택합니다. -
아이디로 선택하기: 요소에 고유한 아이디가 있다면,
document.getElementById('myId')
와 같이 해당 아이디를 사용하여 요소를 선택할 수 있습니다. -
클래스로 선택하기: 특정 클래스를 가진 요소를 선택할 수 있습니다.
document.getElementsByClassName('myClass')
와 같이 해당 클래스 이름을 사용하여 요소를 선택할 수 있습니다. -
선택자로 선택하기: CSS 선택자를 사용하여 요소를 선택할 수 있습니다.
document.querySelector('.myClass')
와 같이 선택자를 사용하여 요소를 선택할 수 있습니다.
예시:
// 태그 이름으로 선택하기
const divElements = document.getElementsByTagName('div');
console.log(divElements); // 페이지의 모든 <div> 요소들을 출력합니다.
// 아이디로 선택하기
const myElement = document.getElementById('myId');
console.log(myElement); // 아이디가 'myId'인 요소를 출력합니다.
// 클래스로 선택하기
const elementsWithClass = document.getElementsByClassName('myClass');
console.log(elementsWithClass); // 클래스 이름이 'myClass'인 요소들을 출력합니다.
// 선택자로 선택하기
const element = document.querySelector('.myClass');
console.log(element); // 클래스 이름이 'myClass'인 첫 번째 요소를 출력합니다.
소제목: 요소의 조작하기
선택한 요소를 조작하여 웹 페이지의 내용을 변경하거나 스타일을 조작할 수 있습니다. DOM을 사용하여 요소를 조작하는 주요 메서드와 속성에 대해 알아보겠습니다.
-
innerHTML: 요소의 내부 HTML 코드를 변경합니다. 즉, 요소 안에 있는 모든 내용을 새로운 HTML로 대체합니다.
-
textContent: 요소의 텍스트 콘텐츠를 변경합니다. HTML 태그를 해석하지 않고 순수한 텍스트로 처리합니다.
-
setAttribute: 요소의 속성 값을 변경합니다. 예를 들어,
element.setAttribute('src', 'image.jpg')
는 이미지 요소의 소스를 ‘image.jpg’로 변경합니다. -
style: 요소의 스타일을 변경합니다.
element.style.color = 'red'
와 같이 직접 스타일 속성에 접근하여 변경할 수 있습니다.
예시:
// innerHTML을 사용하여 요소의 내부 HTML 변경하기
const myElement = document.getElementById('myId');
myElement.innerHTML = '<p>새로운 내용</p>';
// textContent를 사용하여 요소의 텍스트 변경하기
const myElement = document.getElementById('myId');
myElement.textContent = '새로운 텍스트';
// setAttribute를 사용하여 요소의 속성 값 변경하기
const imageElement = document.querySelector('img');
imageElement.setAttribute('src', 'image.jpg');
// style을 사용하여 요소의 스타일 변경하기
const myElement = document.getElementById('myId');
myElement.style.color = 'red';
myElement.style.backgroundColor = 'yellow';
주의해야 할 점:
-
성능 고려: DOM 조작은 브라우저의 렌더링 엔진에 큰 영향을 줄 수 있습니다. DOM 조작은 가능한 한 최소화하고, 필요한 경우에만 수행하는 것이 좋습니다.
-
재사용성과 유지보수성: 코드를 작성할 때 요소의 선택과 조작을 일관성 있게 유지하고, 코드의 가독성과 유지보수성을 고려해야 합니다. 변수를 사용하여 선택한 요소를 참조하고, 중복되는 코드를 피하는 것이 좋습니다.
-
크로스 브라우징: DOM 메서드와 속성은 브라우저 간에 일관된 동작을 보장하지 않을 수 있습니다. 특히 오래된 브라우저에서는 일부 기능이 지원되지 않을 수 있으므로, 크로스 브라우징을 고려하여 코드를 작성해야 합니다.
-
보안 고려: 사용자 입력을 동적으로 DOM에 반영할 때, 보안 상의 위험에 노출될 수 있습니다. 항상 사용자 입력을 신뢰할 수 없으므로, 적절한 데이터 검증과 이스케이프 처리를 수행해야 합니다.
-
성능 최적화: DOM 조작은 성능에 영향을 미치기 때문에, 대규모 DOM 조작이 필요한 경우에는 성능 최적화를 고려해야 합니다. 여러 DOM 조작을 일괄적으로 처리하거나, DocumentFragment를 사용하여 일시적으로 DOM 조작을 수행하는 등의 방법을 고려할 수 있습니다.
DOM 조작을 효과적으로 사용하면 웹 페이지를 동적으로 제어할 수 있습니다. 주의해야 할 점을 염두에 두고, DOM을 자유롭게 활용하여 웹 페이지를 멋지게 만들어보세요!