ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] ⭐️DOM 개념 정리
    Front-end/javascript 2022. 9. 4. 23:49
    모든 객체는 속성 or 메서드를 가지고 있다

    1️⃣ Window 객체

    History(주소내역), Location(주소표시줄), document(문서), window(창 - 최상위 객체)

     

     

    Window 객체의 속성 일부

    innerWidth
    innerHeight
    창의 콘텐츠 영역 폭/높이를 반환 - 스크롤바, 제목표시줄 등은 제외
    outerWidth
    outerHeight
    창의 모든 인터페이스 요소(스크롤바 등)를 포함한 폭/높이를 반환
    closed 창이 열려 있는지 닫혀 있는지를 Bool 표현식으로 반환
    닫혀 있으면 true, 열려 있으면 true 반환
    top 현재 창의 최상위 브라우저 창을 반환

     

    예시)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Practice DOM</title>
        <style>
            body {height: 3000px; background-color: rgb(241, 241, 241); border: 10px solid black; margin: 0;}
        </style>
        <script>
            // 객체명.속성명으로 작성
    
            // 📌 객체의 크기값 가져오기 (innerHeight와 outerHeight 비교)
            // 1. innerHeight: 창의 세로폭(스크롤바, 제목 표시줄, border값 등 제외)
            document.write('innerHeight: ' + window.innerHeight + '<br>');  //934
    
            // 2. outerHeight: 창의 세로폭(스크롤바, 제목 표시줄, border값 등 포함)
            document.write('outerHeight: ' + window.outerHeight + '<br>');  //1046
        </script>
    </head>
    <body>
        
    </body>
    </html>

     

    Window 객체의 메서드 일부

    close 창을 닫는 메서드 - 매개변수X
    moveBy/To(x,y) 창을 상대적/절대적으로 이동시키는 메서드
    open(url, name, specs, replace) 새창 또는 새탭으로 창을 여는 메서드
    resizeBy/To(w,h) 창 사이즈를 상대적/절대적으로 변경시키는 메서드
    scrollTo/By(x,y) 창의 스크롤바 위치를 절대적/상대적으로 이동시키는 메서드

     

    예시 1) open 메서드

            // 📌 open 메서드
            // open(url, name, specs, replace);
    
            window.open('http://google.com', '', 'width=300, height=300, true');

    open 메서드는 브라우저가 팝업을 차단하기 때문에 제이쿼리나 다른 방식으로 구현하는 것이 일반적이다.

     

     

     

    예시 2) close 메서드

            // 📌 close 메서드
            // self: 현재 창을 선택하는 window 객체의 속성
    
            var num = 5;
    
            // 5초부터 1초 간격으로 줄어드는 숫자를 화면에 표시
            setInterval(function(){ // 콜백 함수를 매개변수로 함
                document.write('<h1>' + num + '</h1>');
    
                num--;
            },1000);
    
            // 5초가 지나면 창이 닫힘
            setTimeout(function(){
                window.self.close();
            },5001);

     


    2️⃣ DOM(Document Object Model)

    DOM이란?

    - HTML 문서의 모든 요소를 의미한다

    - JS는 HTML DOM을 이용해서 모든 요소에 접근 가능하다

     


    문서 객체의 getOO() 메서드

    아이디 getElementById('아이디명') 문서 객체인 태그의 id값으로 문서 객체를 선택
    태그 getElementsByTagName('태그명') 문서 객체인 태그명으로 문서 객체를 선택
    태그는 한 개만 쓰지 않기 때문에 복수인 배열로 선택
    클래스 getElementsByClassName('클래스명') 문서 객체인 태그의 class 값으로 문서 객체를 선택
    클래스명도 한 개만 쓰지 않기 때문에 복수인 배열로 선택

     

        <!-- 📌 getElementById(): 태그의 id값으로 문자 객체를 선택 -->
    
        <h1 id="text01">Title</h1>
        <h3 id="text02">Sub Title</h3>
        <h6 id="text03">contents</h6> -->
    
        <script>
    
            // 문서 객체 선택
            var text01 = document.getElementById("text01");
            var text02 = document.getElementById("text02");
            var text03 = document.getElementById("text03");
        </script>

     

     

     

        <!-- 📌 getElementsByTagName(): 태그명으로 문서 객체를 선택, 복수인 배열로 선택 -->
        <h1>제목태그</h1>
        <h1>제목태그</h1>
        <h1>제목태그</h1>
    
        <script>
    
            // 문서 객체 선택
            var text = document.getElementsByTagName("h1");
            var text02 = document.getElementsByTagName("h3");
            var text03 = document.getElementsByTagName("h6");
    
            // style: 문서 객체의 CSS 스타일 컨트롤 속성
            // style.css속성명 = 값;
            text[0].style.color = 'red'
            text[1].style.color = 'green'
            text[2].style.color = 'blue'
        </script>

     


    queryOO() 메서드

    CSS 선택자를 매개변수로 작성한다

     

    querySelector 메서드 querySelectorAll 메서드
    CSS 선택자로 문서 객체를 직접적으로 선택.
    여러 요소가 한번에 선택될 때는 일치되는 첫 번째 요소를 반환 요소가 여러 개일 수 있으므로 배열로 선택

     


    문서 객체 생성

     

    1. 문서 객체 생성 메서드

    createElement('태그명')

     

    ** appendChild() 메서드와 사용 - 문서 객체 생성한 것을 삽입

    ** innerHTML = '텍스트'; - 텍스트 추가

     

            <!-- 문서 객체 생성 -->
            <!-- 1️⃣ 문서 객체 생성 메서드: createElement('태그명')  -->
    
            <!-- 정적 생성 -->
            <h1>제목 태그1</h1>
    
            <!-- 동적 생성 -->
            <script>
                var h2 = document.createElement('h2');
                h2.innerHTML = '제목태그2';
                document.body.appendChild(h2);
            </script>

     

     

    2. 속성 컨트롤 메서드

    getAttribute('속성명') setAttribute('속성명', 값)
    문서 객체의 태그 속성값을 얻어오는 메서드, 게터 문서 객체의 태그 속성값을 변경시티는 메서드, 세터

     

            <!-- 2️⃣ 속성 컨트롤 메서드: getAttribute('속성명') / setAttribute('속성명', 값) -->
            <script>
                var img = document.createElement('img');
    
                img.setAttribute('src', 'test.jpg');
                img.setAttribute('width', 300);
    
                document.body.appendChild(img);
    
                var w = img.getAttribute('width');
    
                alert(w);
            </script>

     

    3. 텍스트 컨트롤 속성

            <!-- 3️⃣ 텍스트 컨트롤 속성 -->
            <h1 id="h1Text01"></h1>
            <h1 id="h1Text02"></h1>
            <h1 id="h1Text03"></h1>
    
            <script>
                //1. 문서 객체 선택
                var h1Text01 = document.getElementById('h1Text01');
                var h1Text02 = document.getElementById('h1Text02');
                var h1Text03 = document.getElementById('h1Text03');
    
                h1Text01.innerHTML = '<a href="#">링크태그1</a>'; 
                h1Text02.innerHTML = '<a href="#">링크태그2</a>'; 
                h1Text03.innerHTML = '<a href="#">링크태그3</a>'; 
            </script>

     

    💡 문서 객체 텍스트 관련 속성

    innerHTML 텍스트에 있는 태그를 태그로 인식
      숨겨진 것(display: none;)도 같이 반환됨
    innerText 텍스트에 있는 태그를 인식하지 못함
      숨겨진 것(display: none;)을 반환하지 못함
    textContent 노드가 갖고 있는 텍스트를 컨트롤
      텍스트에 있는 태그를 인식하지 못함
      숨겨진 것(display: none;)도 같이 반환됨

     

     

    'Front-end > javascript' 카테고리의 다른 글

    [JS Deep Dive] 04. 변수  (0) 2022.08.23
Designed by Tistory.