JavaScript

06_DOM

보갱:) 2020. 10. 25. 18:32

06_DOM.pdf
0.44MB


 

 

DOM

 Document Object Model - HTML에 있는 태그를 객체화하여 자바스크립트에서 다룰 수 있게 한 것

 모든 노드객체에 접근할 수 있는 요소와 메소드를 제공

※ 노드 : HTML에 있는 태그를 구조화 하였을 때 각각의 태그

 

요소노드(elements node)와 텍스트노드(textnode)

 요소노드 : 태그 그 자체를 의미 

텍스트노드 : 태그에 기록되어 있는 문자

 

 텍스트 노드를 가지는 태그와 가지지 않는 태그가 있음

→ 텍스트노드를 가지는 태그 : h?, p … 등등

→ 텍스트노드를 가지지 않는 태그 : img, input …  등등


 

#dom.html

   <style>
      .div {
         border: 5px solid black;
         height: 500px;
         width: 800px;
      }
   </style>

   <button onclick="func1();">클릭1</button>
   <button onclick="func2();">클릭2</button>
   <button onclick="func3();">삭제 할 요소 추가</button>
   <button onclick="func4();">삭제버튼(부모에서 삭제)</button>
   <button onclick="func5();">삭제버튼(해당객체 삭제)</button>
   
   <div id="d1" class="div"></div>


 

 

 

 

텍스트 노드가 있는 문서객체 생성

요소노드와 텍스트노드를 생성하고 이를 body노트의 자식으로 포함 가능

메소드 내용
document.createElement(“태그명”) 요소노드 생성
document.createTextNode(“내용”) 텍스트 노드 생성
객체명.appendChild(node) 태그에 자손으로 노드 추가

절차

1) 요소 노드 생성

2) 텍스트 노드 생성

3) 요소 노드에 텍스트 노트 추가

4) body내부의 필요한 위치에 요소 노드 추가


[클릭1]버튼 onclick="func1();"

   <script>
      function func1() {
         var d1 = document.getElementById("d1");
         //createElement(태그이름) -> h3태그 생성
         //1. 요소노드 생성
         var h3 = document.createElement("h3");
         var a = document.createElement("a");

         //2. 텍스트노드 생성
         //var textNode = document.createTextNode("<a href='#'>추가문구</a>");
         var textNode = document.createTextNode("추가문구");

         //3.요소노드에 텍스트노드 자식으로 추가 (appendChild : 자식으로 추가)
         //h3.appendChild(textNode);
         a.appendChild(textNode);
         h3.appendChild(a);
         //검은색으로 나오니까 개발자도구(F12)에서 확인

         //**아래 코드와의 차이점 알기
         //h3.innerHTML += "<a href='#'>추가문구</a>";

         //4. html본문에 요소노드 추가
         d1.appendChild(h3);
      }
   </script>      


 

 

 

 

 

텍스트 노드가 없는 문서객체 생성

요소노드를 생성하고 속성을 설정한 후 이를 body노드의 자식으로 포함 가능

메소드 내용
객체명.속성 = 속성값 태그 속성값 설정
객체명.setAttribute(속성명,속성값) 태그 속성값 설정
객체명.getAttribute(속성명) 태그 속성값 확인
객체명.appendChild(node) 태그에 자손으로 노드 추가

 

절차

1) 요소 노드 생성

2) 생성된 노드 속성 설정

3) body내부의 필요한 위치에 요소 노드 추가


[클릭2]버튼 onclick="func2();"

   <script>
        function func2() {
            var d1 = document.getElementById("d1");
            
            //1. 요소노드 생성(img태그)
            var img = document.createElement("img");

            //2. 생성된 노드 속성 설정
            //태그 속성값 설정 : 객체명.속성 = 속성값 
            img.src = "img/sana.jpg"
            img.width = "150";
            img.height = "300";

            //존재하지 않는 속성은 작성해도 줄 수 없음
            //img.testProperty = 'test';
            
            //태그 속성값 설정 (존재하지 않는 속성 추가)
            img.setAttribute("testProperty", 'test');

            //태그 속성값 확인
            console.log(img.getAttribute("testProperty"));

            //3. body내부의 필요한 위치에 요소 노드 추가
            d1.appendChild(img);
        }
   </script>     


 

 

 

문서 객체 스타일 수정

style객체를 이용하여 문서의 스타일을 변경

 

방법

객체명.style.속성명 = 속성값;

→ 자바스크립트에서 속성명에 ‘-’를 사용할 수 없기 때문에 css 속성 중 ‘-’가 사 용되는 속성명의 경우

카멜표기법으로 변경해서 사용해야 함 (ex. background-color → backgroundColor)


[삭제 할 요소 추가]버튼 onclick="func3();"

   <script>
        function func3() {
            var d1 = document.getElementById("d1");
            var obj = document.createElement("p");
            
            //문서 객체 스타일 수정 : 객체명.style.속성명 = 속성값;
            obj.style.border = "1px solid red";
            obj.style.backgroundColor = "pink";
            obj.style.width = "100px";
            obj.style.height = "100px";

            //객체명.setAttribute(속성명,속성값)
            obj.setAttribute("id", "pp");
            d1.appendChild(obj);
        }
   </script> 


 

 

 

 

문서 객체 제거

페이지에 작성되어 있는 문서의 객체(태그)를 제거하는 것

 

메소드 내용
객체명.remove(); 해당 객체 삭제
doucument.removeChild(객체명); 부모객체 내부의 자손태그 삭제

[삭제버튼(부모에서 삭제)]버튼 onclick="func4();"

[삭제버튼(해당객체 삭제)]버튼 onclick="func5();"

   <script>
        function func4() {
            var d1 = document.getElementById("d1");
            var pp = document.getElementById("pp");
            d1.removeChild(pp);
        }

        function func5() {
            var pp = document.getElementById("pp");
            pp.remove();
            //d1.remove();
        }
   </script> 

 

 

 

 

 

'JavaScript' 카테고리의 다른 글

06_DOM(실습예제(2))  (0) 2020.10.25
06_DOM(실습예제(1))  (0) 2020.10.25
05_BOM(2)  (0) 2020.10.25
05_BOM(1)  (0) 2020.10.25
04_객체(실습예제)  (0) 2020.10.25