본문 바로가기
JavaScript

[JavaScript] 문서 객체 모델 DOM(Document Object Model)

by jane.dev 2021. 8. 31.
반응형
DOM(문서 객체 모델)
HTML 문서에 접근하기 위한 일종의 인터페이스로
HTML 문서 내의 모든 요소를 정의하고 각각의 요소에 접근하는 방법 제공

 

이러한 객체 모델을 이용하는 이유

  • 새로운 HTML 요소나 속성 추가 가능
  • 존재하는 HTML 요소나 속성 제거 가능
  • HTML 문서의 모든 HTML 요소 변경 가능
  • HTML 문서의 모든 HTML 속성 변경 가능
  • HTML 문서의 모든 CSS 스타일 변경 가능
  • HTML 문서에 새로운 HTML 이벤트 추가 가능
  • HTML 문서의 모든 HTML 이벤트에 반응 가능

 

요소의 선택

<body>
	<div id="contents">
		<h1 class="title">This is title</h1>
		<div class="detail">
			<span>detail 1</span>
		</div>
		<div class="detail">
			<span>detail 2</span>
		</div>
		<div class="detail">
			<span>detail 3</span>
		</div>
		<input type="text" name="id" />
		<input type="password" name="pw" />
	</div>
</body>

 

메서드

// document.getElementById
//해당 아이디의 요소 선택
const contents = document.getElementById("contents");

// document.getElementsByClassName
//해당 클래스에 속한 요소 모두 선택
const title = document.getElementsByClassName("title");

// document.getElementsByTagName
//해당 태그 이름의 요소 모두 선택
const spanTag = document.getElementsByTagName("span");

// document.getElementsByName
//해당 name 속성값을 가지는 요소 모두 선택
const nameId = document.getElementsByName("id");

// document.querySelectorAll
//해당 선택자로 선택되는 요소 모두 선택
const allDetail = document.querySelectorAll("#contents .detail");

 

콘솔에 출력

 

array로 가져온 요소들의 태그를 지정하려면, 메서드에 인덱스를 작성

// 인덱스 지정
const titleZero = document.getElementsByClassName("title")[0];
const spanTagOne = document.getElementsByTagName("span")[1];
const nameIdZero = document.getElementsByName("id")[0];
const allDetailTwo = document.querySelectorAll(".detail:first-child");

 

콘솔에 출력

 

요소의 생성

메서드

// document.createElement("태그명")
// HTML 요소 생성
const title = document.createElement("h1");

// document.write(텍스트);
// 텍스트 출력
document.write("Hello world!");

 

콘솔에 출력

 

이벤트 핸들러 추가

<!-- body 내부에 버튼 생성 -->
<button class="btn">click me!</button>

 

메서드

window.onload = function () {
	const btn = document.getElementsByClassName("btn")[0];
	
    // .onclick = function(){ 실행문 };
    // 마우스 클릭 이벤트와 연결될 이벤트 핸들러 추가
	btn.onclick = function clickBtn() {
		alert("Hi!");
	};
};

 

버튼 클릭