[JS] DOM 객체
DOM이란 Document Object Model의 약자로 HTML 태그들을 하나씩 개체화한 것이다.
HTML페이지의 내용과 모양을 Javascript로 제어하기 위해 사용되는 객체들이다.
HTML 태그 당 DOM객체가 하나씩 생성된다.
HTML 태그의 포함관계에 따라서 부모 자식 관계로 구성한다.
HTML문서의 태그를 객체로 받아오기
DOM객체를 사용하는 가장 기본은 document를 이용하는 것이다.
이전에 document.write를 이용할 때 사용한 적 있었다.
document란 해당 HTML문서를 나타낸다.
따라서 해당 문서의 어떠한 태그를 받아오고 싶다면 document.가져올 방법 선택의 형태로 작성하여 태그객체를 받아온다.
위의 메소드들을 사용하여 원하는 속성을 가진 태그에 접근한다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>document</title>
</head>
<body>
<div id="divTest">div태그입니다.</div>
</body>
<script>
var div = document.getElementById("divTest"); //id값으로 접근
</script>
</html>
위처럼 여러가지 메소드가 있지만 document.getElementById("id값");의 형태로 메소드를 이용하여 해당 태그객체를 받아올 수 있다.
받아온 태그 객체 이용하기
받아온 객체의 속성이나 값을 변경할 때에는 . 을 이용해서 속성이나 값에 접근한다.
받아온 태그 객체 안에 프로퍼티가 존재한다고 생각하면 이해가 쉽다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>document</title>
</head>
<body>
<div id="divTest">1번 div태그입니다.</div>
<input type="button" value="버튼" onclick="btnClick()">
</body>
<script>
function btnClick(){
var div = document.getElementById("divTest"); //id값으로 접근
div.style.background = "cyan";
}
</script>
</html>
See the Pen wvogZgN by Heekng (@heekng) on CodePen.
위처럼 div객체를 id값으로 접근하여 태그객체로 받아온 후, div.style.background의 순서로 스타일에 접근, background로 직접 접근하여 값을 변경할 수 있다.
절차대로 이해하면 div태그의 프로퍼티 중, style에 접근하고, style을 키로 가지는 값에서 background를 키로 가지는 값을 수정한 것이다.
DOM객체의 프로퍼티
DOM객체에서 자주 사용하는 프로퍼티이다.
기본 프로퍼티
id | 태그의 id 속성 값 |
lang | 태그의 lang 속성 값 |
style | style 객체에 대한 래퍼런스 |
title | 태그의 title 속성 값 |
tagName | 태그 이름 문자열, 항상 대문자로 표시한다. 읽기만 가능하다. |
innerHTML | 시작 태그와 종료 태그 사이의 텍스트 |
DOM 트리와 관련된 프로퍼티 (읽기만 가능하다)
chiledElementCount | 자식의 DOM 개수 |
firstElementChild | 첫 번째 자식 객체 |
lastElementChild | 마지막 자식 객체 |
nextElementSibling | 다음 형제 객체 또는 오른쪽 객체 |
parentElenet | 부모 객체 |
previousElementSibling | 이전 형제 객체 또는 왼쪽 객체 |
크기와 위치에 관련된 프로퍼티 (읽기만 가능하다)
offsetHeight | 패딩, 테두리, 스크롤바를 포함한 높이 |
offsetWidth | 패딩, 테두리, 스크롤바를 포함한 너비 |
offsetLeft | 객체의 수평 출력 위치 |
offsetTop | 객체의 수직 출력 위치 |
DOM객체의 메소드
addEventListener() | 새로운 이벤트 리스너 등록 |
appendChild() | 마지막 자식 뒤에 새로운 자식 추가 |
click() | 사용자가 마우스를 클릭한 것과 동일한 작업 수행 |
focus() | 키 입력을 받을 수 있도록 이 객체에 포커스 지정 |
setAttribute() | 속성 추가 |
insertBefore() | 지정된 자식 앞에 새 자식 추가 |
querySelector() | 지정된 CSS 셀렉터와 일치하는 첫 번째 자식 리턴 |
removeChild() | 자식 삭제 |
replaceChilde() | 자식 대체 |
removeEventListener() | addEventListener()로 등록한 이벤트 리스너 제거 |
getAttribute() | 속성 알아내기 |
getElemetsByTagName() | 주어진 태그 이름을 가진 모든 태그 |
getElementsByClassName() | 주어진 class속성 값을 가진 모든 태그 |
getElementsByName() | 주어진 name속성 값을 가진 모든 태그 |
getElementsById() | 주어진 id속성 값을 가진 첫 번째 DOM객체 |
addEventListener() | document 객체에 이벤트 리스너 등록 |
close() | HTML콘텐츠를 브라우저에 출력, 더이상 쓰기를 받지 않는다. |
createElement() | HTML 태그의 동적 생성 |
open() | document에 담긴 콘텐츠를 모두 지우고, 새로운 HTML콘텐츠를 쓸 수 있도록 열기 |
removeEventListener() | document 객체에 등록된 이벤트 리스너 제거 |
write() | document에 HTML 콘텐츠 삽입 |
writeln() | write() 후 '\n' 추가로 입력 |
'JS & TS > Javascipt' 카테고리의 다른 글
win-jenv 첫 오픈소스 프로젝트 (0) | 2022.04.02 |
---|---|
[JS] 브라우저 객체 모델 BOM - 2 (0) | 2021.02.17 |
[JS] 브라우저 객체 모델 BOM - 1 (0) | 2021.02.17 |
[JS] 객체, 프로토타입, property (0) | 2021.02.13 |
[JS] 함수 function (0) | 2021.02.12 |
[JS] 값 비교하기(==, ===) (0) | 2021.02.12 |