본문 바로가기

JavaScript/DAY 36 _ 23.10.13

DOM Basic

 // HTML DOM 관련

        // 1. getElementById ★★★
        // document.getElementById("box1").innerText 

            = "이러면 box1이 body에있으니까 box1에 해당하는 값이 없어서 null exception.";
        // --> 그래서 리스너가 필요하다@!

        // 1-1. addEventListener ★★★
        // --> 대상 DOM 요소에 이벤트를 바인딩하고 해당 이벤트가 발생했을 때 실행될 콜백 함수(이벤트 핸들러)를 지정
        // eventTarget.addEventListener('eventType', function / functionName [, useCapture])
        // 대상객체.addEventListener(이벤트명, 실행할이벤트리스너, 이벤트전파방식)

        // 1. 이벤트 명 : 이벤트 리스너를 등록할 이벤트 타입을 문자열로 전달합니다.
        // 2. 실행할 이벤트 리스너 : 지정된 이벤트가 발생했을 때 실행할 이벤트 리스너를 전달합니다.
        // 3. 이벤트 전파 방식 : false면 버블링(bubbling) 방식으로, true면 캡처링(capturing) 방식으로 이벤트를 전파합니다.

        window.addEventListener("DOMContentLoaded", () => {
            document.getElementById("box1").innerText = "이렇게 글자를 바꿀 수 있따";
        });
        // ---> 자바의 public static void main과 같은 개념으로 대충 생각.

    <!-- on관련 API -->
    <!-- onclick, onmouseenter, onmouseleave... -->

    <div id="box1"
        onclick="clickHandler()"
        onmouseenter="console.log('마우스 오버')"
        onmouseleave="console.log('마우스 리브')"
    >
        클릭핸들러
    </div>

 

    <!-- inputType관련 -->
    <!-- onfocus, onblur... -->

    <input type="text" placeholder="inputType관련" 
        onfocus="console.log('포커스 상태 : 검색창에 손을대면 자동완성을 켜지게')"
        onblur="console.log('포커스 해제 : 검색창에서 손을떼면 꺼지게')"     
    >

<!-- 혼자 정리 -->
    1. head에서 document.getElementById("box1").innerText = ... -> 이걸 실행시키고 싶어
    2. 하지만 box1은 body에 있으므로, 코드가 head부터 시행되면 box1이 없으니까 null로 반환되겠찌?
    3. 그럴때 addEventListener가 필요해. -> 자바의 public static void main과 같은 개념으로 대충 생각하면되고,
    4. head의 리스너가 box1을 실행시켰고, 그와 동시에 box1의 클릭핸들러라는 글자가 innerText의 내용으로 변하게 됨
    5. 그리고 on관련 API가 전부 시행되고, 이것저것 할 수 있찌
    6. input은 그 다음에 열리겠지만 어쨌든 순식간이니까 한번에 켜지지?

 

'JavaScript > DAY 36 _ 23.10.13' 카테고리의 다른 글

Element의 생성 / 삭제 / 추가  (1) 2023.10.16
DOM element 조작  (0) 2023.10.16
DOM API★  (0) 2023.10.13