사용자의 행위 혹은 코드로 인해 브라우저에 어떤 행위가 발생했을 때 브라우저에서 이벤트를 발생시키고 이벤트 타이밍에 어떤 행위에 대한 함수를 등록할 수 있음
→ HTML 요소에 이벤트가 발생했을 때 해당 HTML 요소를 DOM으로 가져와 해당 이벤트에 함수를 등록
<button type="button" onclick="clickEvent()"></button>
window.onload
는 브라우저가 HTML 문서를 다 읽었을 때 호출될 함수를 저장한 propertywindow.onload = function() {
let button = document.getElementById("button");
button.onclick = func;
}
target.addEventListener(type, listner(e), useCapture);
특정 타입의 이벤트와 관련이 있는 객체로 이벤트의 타입을 나타내는 type property와 이벤트 대상을 나타내는 target property를 가짐
브라우저가 이벤트 리스너를 실행시킬 대상 요소를 결정하는 과정
window 객체
까지 이어짐e.preventDefault
로 기본 이벤트 중지stopPropagation
으로 이벤트 전파 중단click
, mousedown
등 이벤트가 중복으로 일어나는 경우 어떻게 처리할 수 있을까
isClicked
와 같은 flag를 사용해 이미 클릭된 경우를 제어document.getElementById('button').onclick = null
document.getElementById('button').setAttribute('disabled', 'true')
Document Object Model은 HTML, XML 문서의 프로그래밍 인터페이스
브라우저가 HTML 구조에 따라 DOM을 트리 구조로 생성
node
Javascript에서는 node를 가져와서 제어할 수 있음
querySelector
: 태그, 클래스, id에 따라서 node를 가져옴querySelectorAll
: 태그, 클래스, id에 따라 NodeList를 가져옴getElementById
: id로 node를 가져옴getElementByClassName
: 클래스 명으로 node를 가져옴querySelector
는 index번호로만 접근하고 getElementBy
는 name, id, index로 접근하기 때문에 querySelector
가 비교적 느림
DOM 조작
createElement
: 새로운 Node 생성setAttribute
: Node에 속성 추가appendChild
: Node를 자식 요소로 추가removeChild
: Node의 자식 요소 삭제정보 가져오기
tagName
: 태그명classList
: 어떤 클래스를 가지는지DOM 탐색
childNodes
: 자식 요소 탐색parentElement
: 부모 요소 탐색참고자료
https://developer.mozilla.org/en-US/docs/Web/Events
http://www.tcpschool.com/javascript/js_event_eventListenerCall
https://ko.javascript.info/dom-nodes