-
[JavaScript] 자바스크립트의 document 객체비전공자 공부일기/:: WEB & Front-End 2020. 6. 21. 02:16
이전 글로 HTML의 DOM 객체에 대한 설명을 적었었다. ▼
이전 글에서 다룬 바 있지만 다시 정리해본다.
document는 DOM 트리의 최상위 객체이다.
브라우저는 HTML 문서를 로드하기 전에 document 객체를 먼저 만든다.
그리고 document 객체를 뿌리로 하는 DOM 트리를 만든다.
document 객체의 역할은 아래와 같다.
- 프로퍼티로 HTML 문서의 전반적 속성을 나타냄
- 메소드로 DOM 객체 검색
- 메소드로 새로운 DOM 객체 생성
- 메소드로 HTML 문서의 전반적 제어 지원
이벤트 리스너
이벤트 리스너는 70여개 이상의 이벤트가 지원된다.
그 중에서 굉장히 많이 쓰이는 것들을 추려보면 아래와 같다.
- onclick
- onerror
- onmouseover
- onscroll
- onkeypress
- onload
모두 on~ 이라는 키워드로 시작하는 것을 볼 수 있는데, '~한 이벤트 발생 시' 라는 의미이다.
이 의미만 알면 그 뒤의 단어들은 직관적으로 네이밍되어 있기 때문에 설명은 스킵.
이벤트 리스너의 세계 또한 심오하고(?) 재밌으니, 따로 글을 파보도록 하겠다.
여기서는 이 정도까지만 보고 간단히 넘어가자.
document 객체의 주요 프로퍼티, 컬렉션, 메소드
ㅁ 주요 프로퍼티
- title, body, head : html문서의 각 <title>, <body>, <head> 태그
- URL : 현재 문서의 URL
- location : 현재 문서의 URL 정보를 가진 location 객체의 레퍼런스
- referrer : 이 HTML 문서를 로드한 원래 문서의 URL 문자열. 이 문서가 처음이면 빈 문자열
ㅁ 주요 컬렉션
- images : 문서 내의 모든 <img> 객체들의 컬렉션
- links : 문서 내의 href 속성을 가진 모든 링크객체들의 컬렉션(<a>나 <area>)
- forms : 문서 내의 모든 폼 객체들의 컬렉션
ㅁ 주요 메소드
- getElementById() : 아이디명으로 첫 번째 DOM 객체 리턴
- getElementsByTagName() : 특정 태그명을 가진 모든 태그 컬랙션 형태로 리턴
- getElementsByClassName() : 특정 클래스명을 가진 모든 태그 컬렉션 형태로 리턴
- open() : 콘텐츠를 모두 지우고 새로운 HTMl 콘텐츠를 쓸 수 있도록 열기
- write(), writeln() : document에 HTML 콘텐츠 삽입. ln이 붙은 건 write() 후 '\n' 추가출력(브라우저 상에는 빈칸 하나)
- close() : document 객체에 있는 HTML 콘텐츠를 브라우저에 출력하고, 더이상 쓰기를 받지 않음
이 중에서 document.write()를 쓰게 되면 현재 document 객체에 담긴 내용의 끝에 HTML 텍스트를 추가하는 코드이다.
주의할 점은, HTML 문서가 로드되어 출력이 모두 이뤄진 후에는 document 객체가 '닫힌다'
이 상태에서 write()가 실행되면, 브라우저는 현재 document 객체에 담긴 문서를 지우고 빈 doucment를 새로 연다.
현재 브라우저 윈도우에 출력된 HTML 텍스트를 지워버리고 새로운 내용을 출력하려면
document.open() -> document.write() -> document.close() 순으로
순서를 지켜 열고닫기까지 확실히 해주어야 한다.
이 경우에도 document.close()가 실행된 후에는 HTML 텍스트를 덧붙일 수 없다.
그러나 아래와 같이 동적 구성을 통해 추가할 수 있다.
HTML 문서의 동적 구성
HTML 문서의 로드가 완료된 document에 새로운 HTML 태그를 추가하는 방법은
추가하고 싶은 HTML 태그를 나타내는 DOM 객체를 생성하여 DOM 트리에 직접 삽입하는 것이다.
ㅁ DOM 객체 동적 생성
document.createElement("태그이름")
: HTML 태그의 DOM 객체를 생성하는 코드
let newDIV = document.createElement("div") // 객체 생성 newDIV.innerHTML = "새로 생성된 DIV" // HTML 텍스트 삽입 newDIV.setAttribute("id", "newDiv") // 속성추가 newDIV.style.backgroundColor = "gray"// css 스타일 추가
ㅁ DOM 트리에 삽입
DOM 객체를 DOM 트리에 삽입하는 방법은 여러가지가 있다.
그 중 다음 2가지 방법이 대표적이다.
부모.appendChild(DOM객체) // 마지막 자식으로 삽입 부모.insertBefore(DOM객체 [, 기준자식]) // 자식객체 중 기준자식 앞에 삽입
ㅁ DOM 객체의 삭제
DOM 객체의 삭제는 removeChild() 메소드로 한다.
부모.removeChild(자식객체)
예를 들어 id=testId인 DOM 객체를 DOM 트리에서 떼어내고자 한다면 다음과 같이 한다.
let test = document.getElementById("testId") let parent = testId.parentElement parent.removeChild(test)
'비전공자 공부일기 > :: WEB & Front-End' 카테고리의 다른 글
[JavaScript] 프로토타입 객체와 prototype, __proto__ (0) 2020.06.22 [JavaScript] 자바스크립트의 객체, 프로토타입 (0) 2020.06.22 [JavaScript] HTML DOM 객체 (Document Object Model) (0) 2020.06.21 [JavaScript] 콜백함수 Callback Function (0) 2020.06.20 [JavaScript] 자바스크립트의 클래스 (0) 2020.06.19