ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] DOM
    VScode/JavaScript 2022. 9. 9. 14:13

    문서객체 모델(DOM, document object model)

    -넓은 의미: 웹 브라우저가 HTML 페이지를 인식하는 방식

    -좁은 의미: document 객체와 관련된 객체의 집합

    -HTML 페이지에 태그를 추가, 수정, 제거할 수 있음

    -기본적인 자바스크립트만으로 DOM을 다루기에는 너무 복잡하므로 간단한 내용만 살펴보고 자세한 내용은 jQuery와 함께

    DOM 관련 용어

    -문서 객체: html or body 태그를 자바스크립트에서 이용할 수 있는 객체로 만들면 그것이 문서 객체

    -노드: 각 요소(head, body, title, script, h1, HEADER...)

     --요소노드(Element Node): HTML 태그

     --텍스트노드(Text Node): 요소 노드 안에 들어 있는 글자

    -정적으로 문서 객체를 생성한다는 의미: 웹페이지가 처음 HTML 페이지에 적혀있는 태그들을 읽으며 생성하는 것

    -동적으로 문서 객체를 생성한다는 의미: 자바스크립트를 사용해 원래 HTML 페이지에는 없는 문서 객체(태그 등)을 생성하는 것

    1. 문서 객체의 변경

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM01.html</title>
        <script type="text/javascript">
            function changeHeader(){
            // document.getElementById("header_1").innerHTML="펭귄";
            var header=document.getElementById("header_1");
            header.innerHTML="펭귄";
            // 문서 객체를 변수에 저장하고 .innerHTML 사용이 가능함. 그 외 메서드들도 변수와 함께 사용 가능
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="제목변경" onclick="changeHeader();"/><br/>
    </body>
    </html>

     

    2. 문서의 객체 추가

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM02</title>
        <script type="text/javascript">
            function createTag(){
                // 요소노드(HTML) 생성 -> 텍스트노드 생성 -> 텍스트노드를 요소노드에 첨가(삽입) -> 요소노드를 body에 첨가(삽입)
    
                // 요소노드 생성에서 변수에 저장
                var header=document.createElement('h2'); // h2 태그를 생성해서 변수에 저장. 아직 화면에 표시되지 않음
    
                // 텍스트노드를 생성해서 변수에 저장
                var textNode=document.createTextNode('hello DOM');
                
                // 텍스트 노드에 내용을 문서객체(h2)에 원래 내용이 있다면 그 끝에 이어서 원래 내용이 없다면 처음의 내용으로 삽입
                header.appendChild(textNode);
    
                // body에 header 객체를 원래 내용들의 맨끝에 추가 또는 원래 내용이 없다면 처음의 내용으로 추가
                document.body.appendChild(header);
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="문서객체생성1" onclick="createTag();"/><br/><!-- 없던 태그 추가 배치-->
    </body>
    </html>

     

    3. 이미지 태그 생성 - 텍스트 노드가 없는 노드 생성

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM03</title>
        <script type="text/javascript">
            function createImg(){
                var imgTag=document.createElement('img');
                imgTag.src='images/Koala.jpg';
                imgTag.width=300;
                document.body.appendChild(imgTag);
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="문서객체생성2" onclick="createImg();"/><br/><!-- 이미지 태그 추가 -->
    </body>
    </html>

     

    4. 문서 객체의 innerHTML을 이용하여 객체 생성

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM04</title>
        <script type="text/javascript">
            function createUI(){
                var output='<br/>';
                output+='<ul>';
                output+='<li><h2>JavaScripte</h2></li>';
                output+='<li><h2>jQuery</h2></li>';
                output+='<li><h2>Ajax</h2></li>';
                output+='</ul>';
                output+='<br/>';
                output+='<ul>';
                // alert(output);
                document.body.innerHTML+=output;
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="문서객체생성3" onclick="createUI();"/><br/>
    </body>
    </html>

     

     

    5. 문서 객체 선택 및 가져오기1

    -웹페이지에 이미 존재하는 HTML 태그를 스크립트로(id로) 가져오는 방법

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM05</title>
        <script type="text/javascript">
    // -getElementById() 메서드는 한 번에 한가지 문서 객체만 가져올 수 있음
            function getDom(){
                var header1=document.getElementById('header_1');
                var header2=document.getElementById('header_2');
                header1.innerHTML='hello javascript';
                header2.innerHTML='hello DOM';
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="문서객체 선택_가져오기1" onclick="getDom();"/><br/>
    </body>
    </html>

     

    6. 문서 객체 선택 및 가져오기2

    -getElementByTagName('tagName'): tagName과 일치하는 문서객체를 배열로 가져옴

    -getElementByName('name'): 태그의 name 속성이 name과 일치하는 문서 객체를 배열로 가져옴

    -getElementByClassName('className'): 태그의 class 속성과 일치하는 문서 객체를 배열로 가져옴

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM06</title>
        <script type="text/javascript">
            function getDom2(){
                var headers=document.getElementsByTagName('h1');
                headers[0].innerHTML='태그이름으로 가져오기1';
                headers[1].innerHTML='태그이름으로 가져오기2';
    // name이나 TagName, ClassName이 중복되어 있다면 
    // getElement 함수로 가져왔을 때 순서대로 인덱스가 부여된 배열로 사용됨
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="문서객체 선택_가져오기2" onclick="getDom2();"/><br/>
    </body>
    </html>

     

    7. 문서객체의 스타일 변경

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM07</title>
        <script type="text/javascript">
            function changeStyle(){
                var header=document.getElementById('header_1');
                header.style.border='1px solid black';
                header.style.color='orange';
                header.style.backgroundColor='yellow';
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="문서객체스타일조작" onclick="changeStyle();"/><br/>
    </body>
    </html>

     

    8. 문서객체 제거

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM08</title>
        <script type="text/javascript">
            function removeDom(){
                var willRemove=document.getElementById('header_1');
                document.body.removeChild(willRemove); 
    // body 문서 객체 바로 아래 수준에 제거하고자 하는 문서객체가 있을 때 가능한 코드
                var willRemove2=document.getElementById('header_2');
                willRemove2.parentNode.removeChild(willRemove2); 
    // 일반적으로 문서 객체를 제거할 때 사용하는 코드
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="문서객체제거" onclick="removeDom();"/><br/>
    </body>
    </html>

     

    9. 날짜/시간 표시

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>DOM09</title>
        <script type="text/javascript">
            function viewDateTime(){
                var clock=document.getElementById('clock');
                setInterval(function(){
                    var date=new Date();
                    clock.innerHTML=date.toLocaleString();
                },1000);
            }
        </script>
    </head>
    <body>
        <h1 id="header_1">HEADER</h1>
        <img src="images/Penguins.jpg" width="300">
        <div><h1 id="header_2" class="" name="">HEADER-2</h1></div>
        <h1 id="clock"></h1>
        <input type="button" value="날짜시간표시" onclick="viewDateTime();"/><br/>
    </body>
    </html>

    'VScode > JavaScript' 카테고리의 다른 글

    [JavaScript] navigator  (0) 2022.09.09
    [JavaScript] vaildation, select tag, visibility, check  (0) 2022.09.08
    [JavaScript] Image  (0) 2022.09.08
    [JavaScript] BOM  (0) 2022.09.08
    [JavaScript] function  (0) 2022.09.08

    댓글

Designed by Tistory.