소년코딩

Document 타입

자바스크립트에서는 문서 노드를 Document 타입으로 표현한다.

브라우저에서 전체 HTML 페이지를 표현하는 문서 객체는 HTMLDocument의 인스턴스이며,

HTMLDocument는 Document를 상속한다.

document(문서) 객체는 window의 프로퍼티이므로 전역에서 접근할 수 있다.

특징

  • nodeType은 9이다.
  • nodeName은 '#document'이다.
  • nodeValue는 null이다.
  • parentNode는 null이다.
  • OwnerDocument는 null이다. 

Document 타입은 HTML 페이지를 표현하며,

가장 자주 쓰이는 용도는 document 객체를 통해 페이지에 대한 정보를 얻고 구조 및 외관을 조작하는 것 이다.


Document 타입의 주요 프로퍼티와 메서드

  • doctype
  • documentElement
  • inplementation.*
  • activeElement
  • body
  • head
  • title
  • lastModified
  • referrer
  • URL
  • defaultview
  • compatMode
  • ownerDocument
  • hasFocus()
  • getElementById()
  • getElementsByTagName()
  • getElementsByName()
  • wirte()
  • writeln()

Document 자식 노드

Document 노드는 자식의로 하나의 DocumentType 노드와 Element 노드를 가질 수 있다.

console.log(document.childNodes[0].nodeType);   // 10 (DOCUMENT_TYPE_NODE)
console.log(document.childeNodes[1].nodeType);  //  1 (ELEMENT_NODE)

또한 document는 해당 요소에 더 빨리, 직접접으로 접근할 수 있는 프로퍼티도 제공한다.

console.log(document.childNodes[0]);     // <!DOCTYPE html>
console.log(document.doctype);           // <!DOCTYPE html>
 
console.log(document.childNodes[1]);     // html
console.log(document.documentElement);   // html
 
var head = document.head; // <head>
var body = document.body; // <body>

일반적인 문서 정보

document 객체는 로드된 HTML 문서/DOM에 대한 일반적인 정보에 접근할 수 있게 해준다.

console.log(document.title);        // 문서 제목
document.title = 'New page';        // 문서 제목 설정
console.log(document.URL);          // 완전한 URL
console.log(document.domain);       // 도메인 이름
console.log(document.referrer);     // 레퍼러
console.log(document.lastModified); // 최종 수정일
console.log(document.compatMode);   // 호환 모드

요소 위치

DOM에서 가장 자주 하는 일은 특정 요소나 요소 그룹에 대한 참조를 얻는 일이다.

document 객체에는 이런 기능을 하는 메서드는 getElementById()와 getElementsByTagName()이다.

 

getElementById(): 찾으려는 요소 ID를 매개변수로 받고 해당 요소를 찾아 반환하며, 존재하지 않을시 null을 반환한다.

// <div id='myDiv'>Some text</div>
 
// 이 요소는 다음 코드로 찾을 수 있다.
 
var div = document.getElementById('myDiv');   // <div id='myDiv'>에 대한 참조를 가져온다.
// 페이지에 ID가 같은 요소가 두 개 이상 존재한다면 그중 첫 번째 요소를 반환한다.

 

getElementsByTagName(): 요소의 태그 이름을 매개변수로 받고 해당하는 요소가 담긴 NodeList를 반환한다.

HTML 문서에는 HTMLCollenction 객체를 반환하는데, 이 객체는 '살아 있는 객체'라는 점에서 NodeList 컬렉션과 매우 비슷하다.

// HTMLCollection 객체는 images 변수에 저장된다.
var images = document.getElementsByTagName('img');

// NodeList 객체와 마찬가지로 HTMLCollection 객체의 데이터 역시 대곽호 표기법이나 item() 메서드로 접근할 수 있다.

console.log(images.length);      // 이미지의 개수
console.log(images[0].src);      // 첫 번째 이미지의 src 속성
console.log(images.item(0).src); // 첫 번째 이미지의 src 속성 


// 문서 요소 전체를 가져오려면 '*'를 넘긴다.
var allElements = document.getElementsByTagName('*');
// 페이지의 요소 전체를 마크업 순서대로 포함하는 HTMLCollection을 반환한다.


특별한 컬렉션

document 객체에는 특별한 컬렉션이 몇 가지 있다.

각 컬렉션은 모두 HTMLCollection 객체이며 문서에 공통된 요소들에 바르게 접근하도록 만들어졌다.

console.dir(document.anchors); // name 속성이 있는 <a> 요소를 모두 가져온다.

console.dir(document.links);  // href 속성이 있는 <a> 요소를 모두 가져온다.

console.dir(document.forms);  // <form> 요소를 모두 가져온다.
// (= documents.getElementsByTagName('form');)

console.dir(document.images); // <img> 요소를 모두 가져온다. 
// (= documents.getElementsByTagName('img');)

문서에 쓰기

documents 객체의 기능 중에는 웹페이지의 출력을 집접 조작하는 기능이 있따.

write(): 넘겨받은 텍스트를 그대로 추가한다.

wrtielen(): 넘겨받은 텍스트를 그대로 추가하여 줄바꿈 문자(\n)를 문자열 마지막에 추가한다.

document.write('<strong>' + (new Date()).toString() + '</strong>');

문서 내에서 포커스, 활성 참조

document..hasFocus(): 사용자가 현재 HTML 문서가 로드된 창에 포커스를 두고 있는지 알 수 있다.

document.atciveElement: 문서 내에서 포커스를 가지고 있거나 활성 상태인 element에 대한 참조를 얻을 수 있다.

// 문서가 로드된 창/팁에 계속 포커스를 두면 true가 반환된다.
setTimeout(function() {
    console.log(document.hasFocus());  // true or false
}, 5000);

// 문서 내에서 포커스를 가지고 있거나 활성 상태인 element에 대한 참조
console.log(document.activeElement); // ex <textarea>

 

javascript

by 소년코딩

추천은 글쓴이에게 큰 도움이 됩니다.

악플보다 무서운 무플, 댓글은 블로그 운영에 큰 힘이됩니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기