문서 객체 모델

2024. 7. 10. 14:08·빅데이터 분석가 양성과정/JavaScript
목차
  1. 문서 객체 모델과 관련된 용어 정리
  2. 요소(Element)
  3. 태그(Tag)
  4. 요소 노드(Element Node)와 텍스트 노드(Text Node)
  5. 문서 객체 만들기
  6. 텍스트 노드를 갖지 않는 요소 노드를 만들기
  7. innerHTML 속성을 사용하기
  8. 문서 객체 가져 오기
  9. 웹 페이지에 있는 HTML 태그를 자바스크립트로 가져 오는 방법
  10. 변경
  11. 웹 페이지에 있는 HTML 태그를 자바스크립트로 가져 오는 방법
  12. Document.body 코드를 사용하면 문서의 body 요소를 읽어 들일 수 있음
  13. 문서 객체의 스타일 조작
  14. 문서 객체 제거
  15. 문서 객체를 사용한 시계
  16. DOMContentLoaded 이벤트
  17. 글자 조작 하기
  18. 속성 조작하기

문제 객체 모델

  • 문서 객체 모델(DOM, Document Object Model)은 넓은 의미로 웹 브라우저가 HTML 페이지를 인식하는 방식이고 좁은 의미로는 document 객체와 관련된 객체의 집합.
  • 문서 객체 모델을 사용하면 HTML 페이지에 태그를 추가, 수정, 제거할 수 있음

문서 객체 모델과 관련된 용어 정리

요소(Element)

  • HTML 페이지에 있는 html, head, body, title, h1, div, span 등의 태그를 HTML 언어에서는 요소(element)라고 부름
  • 자바스크립트 언어에서는 HTML 언어에서 요소를 문서 객체(document object)라고 부름
    • 문서 객체를 조작한다는 말은 HTML 요소를 조작한다는 의미
    • 제이쿼리(jQuery) 라이브러리, 리액트(React)와 같은 프레임 워크를 사용하기 때문에 문서 객체 조작이 쉬워짐.

태그(Tag)


    
<!DOCTYPE html>
<heml>
<head>
<title>index</title>
<script></script>
</head>
<body>
<h1 id = “header”> HEADER </h1>
</body>
</html>
  • 이 태그를 자바스크립트에서 사용할 수 있는 객체로 만들면 그것이 ‘문서 객체‘임

    
<script>
window.onload = function( ) {
var header = document.getElementById(‘header’);
};
</script>
  • 위 코드에서 header 객체를 ‘문서 객체'라고 부름

요소 노드(Element Node)와 텍스트 노드(Text Node)

  • 요소 노드
    • HTML 태그를 의미
  • 텍스트 노드
    • 요소 노드 안에 들어 있는 글자를 의미

 

문서 객체 만들기

-문서 객체는 텍스트 노드를 갖은 문서 객체와 텍스트 노드를 갖지 않는 문서 객체로 구분

  • 텍스트 노드를 갖는 h1 태그를 만들면서 문서 객체 생성

    
<body>
</body>

 

  • Body 태그에 동적으로 문서 객체를 생성해서 넣기
    • 텍스트 노드를 갖는 문서 객체를 생성하려면 요소 노드와 텍스트 노드를 생성하고 텍스트 노드를 요소 노드에 붙인 후 body 문서 객체에 연결

    
<script>
window.onload = function( ) {
var header = document.createElement(‘h1’);
varh textNode = document.createTextNode(‘Hello DOM’);
};
</script>
  • 부모 객체.appendChild(자식 객체)
  • 위 코드를 실행 했을 때 브라우저 상에 아무 것도 나타나지 않음.
  • 생성한 문서 객체를 body 문서 객체에 연결해야 나타남.
  • 또한 생성한 요소 노드와 텍스트 노드도 연결해야 함

    
<script>
window.onload = function( ) {
var header = document.createElement(‘h1’);
var textNode = document.createTextNode(‘Hello DOM’);
// 노드를 연결함.
header.appendChild( textNode ); // 요소 노드에 텍스트 노드 연결
document.body.appendChild(header); // body 문서 객체에 생성한 객체 연결
};
</script>

 

텍스트 노드를 갖지 않는 요소 노드를 만들기


    
<script>
window.onload = function( ) {
var img = document.createElement(‘img’);
document.body.appendChild(img);
};
</script>
  • img 태그에 이미지를 넣으려면 scr 속성을 지정해 줘야 함
    
        
    <script>
    window.onload = function( ) {
    var img = document.createElement(‘img’);
    img.src = ‘Penguins.jpg’;
    img.width = 500;
    img.height = 350;
    document.body.appendChild(img);
    };
    </script>
    ​

innerHTML 속성을 사용하기

  • 문자열을 선언하고 body 문서 객체의 innerHTML 속성에 넣기만 하면 문서 객체를 생성해 줌

    
<script>
window.onload = function( ) {
var output = ‘’;
document.body.innerHTML = output;
};
</script>
  • innerHTML 속성을 사용한 문서 생성

    
<script>
window.onload = function( ) {
var output = ‘’;
output += ‘<ul>’;
output += ‘ <li>javaScript</li>’;
output += ‘ <li>jQuary</li>’;
output += ‘ <li>Ajax</li>’;
output += ‘</ul>’;
document.body.innerHTML = output;
};
</script>

 

문서 객체 가져 오기

웹 페이지에 있는 HTML 태그를 자바스크립트로 가져 오는 방법

  • Document 객체가 가지고 있는 getElementById(id) 메서드를 이용하여 웹 페이지에 포함된 문서 객체를 가져올 수 있음
    • 한번에 한 가지 문서 객체만 가져올 수 있음. id는 유니크!

    
<script>
window.onload = function( ) {
var header1 = document.getElementById(‘header-1’);
var header2 = document.getElementById(‘header-2’);
};
</script>

    
<body>
<h1 id = ‘header-1’>Header</h1>
<h1 id = ‘header-2’>Header</h1>
</body>

변경


    
<script>
window.onload = function( ) {
var header1 = document.getElementById(‘header-1’);
var header2 = document.getElementById(‘header-2’);
header1.innerHTML = ‘Ha Ha’;
header2.innerHTML = ‘^^’;
};
</script>

  • Document 객체가 가지고 있는 getElementByName(name), getElementByTagName(tagName) 메서드를 이용하여 한 번에 문서 객체를 가져올 수 있음

    
<!DOCTYPE html>
<html>
<head> <title>Index</title>
<script>
window.onload = function( ) {
var headers = document.getElementsByTagName(‘h1’);
};
</script>
</head>
<body>
<h1> Header </h1>
<h1> Header </h1>
</body>
</html>


    
<script>
window.onload = function( ) {
var headers = document.getElementsByTagName(‘h1’);
headers[0].innerHTML = ‘Header One’;
headers[1].innerHTML = ‘Header Two’;
};
</script>

웹 페이지에 있는 HTML 태그를 자바스크립트로 가져 오는 방법

  • Document 객체가 가지고 있는 querySelector(선택자), querySelectorAll(선택자) 메서드를 이용하여 문서 객체를 가져올 수 있음

    
<!DOCTYPE html>
<html>
<head> <title>Index</title>
<script>
window.onload = function( ) {
var header1 = document.querySelector(‘#header-1’);
var header2 = document.querySelector(‘#header-2’);
};
</script>
</head>
<body>
<h1 id = ‘header-1’> Header </h1>
<h1 id = ‘header-2’> Header </h1>
</body>
</html>

    
<script>
window.onload = function( ) {
var header1 = document.querySelector(‘#header-1’);
var header2 = document.querySelector(‘#header-2’);
header1.innerHTML = ‘Header One’;
header2.innerHTML = ‘Header Two’;
};
</script>

Document.body 코드를 사용하면 문서의 body 요소를 읽어 들일 수 있음

  • body 요소 외에도 head 요소와 title 요소 등은 다음과 같은 방법으로 읽어 들일 수 있음

    
document.head
document.title
document.body

    
<!DOCTYPE html>
<html><head>
<title></title>
<script>
document.addEventListener('DOMContentLoaded', () =>{
const header = document.querySelector('h1')
header.textContent = 'HEADERS'
header.style.color = 'white'
header.style.background = 'black'
header.style.padding = '10px'
})
</script>
</head>
<body>
<h1></h1>
</body>
</html>


    
<!DOCTYPE html>
<html><head>
<title></title>
<script>
document.addEventListener('DOMContentLoaded', () =>{
const headers = document.querySelectorAll('h1')
headers.forEach( (header) => {
header.textContent = 'HEADERS'
header.style.color = 'white'
header.style.backgroundColor = 'black'
header.style.padding = '10px'
})
})
</script>
</head>
<body>
<h1></h1> <h1></h1> <h1></h1> <h1></h1>
</body></html>

 

문서 객체의 스타일 조작

  • 문서 객체의 style 속성을 사용하면 해당 문서 객체의 스타일을 변경할 수 있음

    
<!DOCTYPE html>
<html>
<head>
<script>
window.onload = function(){
var header = document.getElementById('header');
header.style.border = '2px solid black';
header.style.color = 'orange';
header.style.backgroundColor = 'brown';
};
</script>
</head>
<body>
<h1 id = 'header'> Header</h1>
</body>
</html>

문서 객체 제거

  • 문서 객체를 제거할 때는 removeChild( child ) 메서드 사용

    
<!DOCTYPE html>
<html>
<head> <title>Index</title>
<script>
window.onload = function( ) {
var willRemove = document.getElementById(‘will-remove’);
document.body.removeChild( willRemove );
};
</script>
</head>
<body>
<h1 id = ‘will-remove’> Header </h1>
</body>
</html>

 

문서 객체를 사용한 시계


    
<!DOCTYPE html>
<html>
<head>
<script>
window.onload = function(){
let clock = document.getElementById('clock');
setInterval(function(){
let t = new Date().toLocaleTimeString()
console.log(t)
}, 1000);
};
</script>
</head>
<body>
<h1 id = 'clock'> </h1>
</body>
</html>

 

DOMContentLoaded 이벤트

  • DOMConentLoaded는 HTML5부터 추가된 이벤트

    
<script>
window.onload = function(){
const h1 = (text) => `<h1>${text}</h1>`
document.body.innerHTML += h1('window의 load 이벤트 발생')
}
</script>


    
<script>
document.addEventListener('DOMContentLoaded', () => {
const h1 = (text) => `<h1>${text}</h1>`
document.body.innerHTML += h1('DOMContentLeaded 이벤트 발생')
})
</script>

 

글자 조작 하기

  • innerHTML 속성과 textContent 속성을 사용해서 문서 객체 내부의 글자 조작

    
<!DOCTYPE html>
<html><head>
<title></title>
<script>
document.addEventListener('DOMContentLoaded', () =>{
const a = document.querySelector('#a')
const b = document.querySelector('#b')
a.textContent = '<h1>textContent</h1>'
b.innerHTML = '<h1>innerHTML</h1>'
})
</script>
</head>
<body>
<div id="a"></div>
<div id="b"></div>
</body></html>

 

속성 조작하기

  • 다음 URL에 접속하면 적절한 크기의 고양이 이미지를 가져올 수 있음
    • http://placekitten.com/너비/높이


    
javascript
<!DOCTYPE html>
<html><head>
<title></title>
<script>
document.addEventListener('DOMContentLoaded', () =>{
const rects = document.querySelectorAll('.rect')
rects.forEach( (rect, idx) => {
const width = (idx + 1) * 100
const src = `http://placekitten.com/${width}/250`
rect.setAttribute('src', src)
})
})
</script>
</head>
<body>
<img class="rect"><img class="rect"><img class="rect"><img class="rect">
</body></html>

'빅데이터 분석가 양성과정 > JavaScript' 카테고리의 다른 글

예외처리  (0) 2024.07.10
이벤트  (4) 2024.07.10
브라우저 객체 모델  (0) 2024.07.10
객체  (1) 2024.07.10
함수  (0) 2024.07.10
  1. 문서 객체 모델과 관련된 용어 정리
  2. 요소(Element)
  3. 태그(Tag)
  4. 요소 노드(Element Node)와 텍스트 노드(Text Node)
  5. 문서 객체 만들기
  6. 텍스트 노드를 갖지 않는 요소 노드를 만들기
  7. innerHTML 속성을 사용하기
  8. 문서 객체 가져 오기
  9. 웹 페이지에 있는 HTML 태그를 자바스크립트로 가져 오는 방법
  10. 변경
  11. 웹 페이지에 있는 HTML 태그를 자바스크립트로 가져 오는 방법
  12. Document.body 코드를 사용하면 문서의 body 요소를 읽어 들일 수 있음
  13. 문서 객체의 스타일 조작
  14. 문서 객체 제거
  15. 문서 객체를 사용한 시계
  16. DOMContentLoaded 이벤트
  17. 글자 조작 하기
  18. 속성 조작하기
'빅데이터 분석가 양성과정/JavaScript' 카테고리의 다른 글
  • 예외처리
  • 이벤트
  • 브라우저 객체 모델
  • 객체
분석가 황규진
분석가 황규진
공공기관 위험평가관련 부서에서 근무하고 있습니다.
HGJ's Insight공공기관 위험평가관련 부서에서 근무하고 있습니다.
글쓰기 관리
분석가 황규진
HGJ's Insight
홈
|
로그인
  • 전체 글 567
    • 개인 활동(일상) 3
      • 독서 2
      • 근황 공유 1
    • 개인 활동(공부) 53
      • Tableau Bootcamp 10
      • 금융 공부 9
      • 직무 공부 22
      • 강의 12
    • 개인프로젝트 4
      • 신용카드 연체 평가 모델 0
      • 대출 승인 여부 예측 모델 4
    • 자격증 7
      • 빅데이터분석기사 1
      • 정보처리기사 1
      • 경영정보시각화 1
      • SQL개발자(SQLD) 1
      • 데이터 분석 준전문가(ADsP) 1
      • 통계적품질관리(SPC) 1
      • AICE Associate 1
    • 코드 정리 11
      • 코드 정리 - Tistory 8
      • 코드 정리 - Python 3
    • 코딩테스트연습 116
      • SQL_프로그래머스 116
    • 취업사관학교 9기 199
      • 모닝스쿨 54
      • 스스로 모닝스쿨 125
      • 직무 스터디 20
      • 반성과 다짐 0
    • 빅데이터 분석가 양성과정 173
      • Python 88
      • Python - 머신러닝 26
      • Python - 딥러닝 31
      • PyQt 4
      • JavaScript 10
      • MySQL 13
      • Node.js 1
hELLO· Designed By정상우.v4.6.1
분석가 황규진
문서 객체 모델
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.