<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
document.querySelector
를 통해서 다양한 속성 & 메소드를 쓸 수 있음getElementById
Element 태그의 id를 바라보고 해당 태그의 DOM을 가져올 수 있음getElementsByClassName
을 통해 Class명을 토대로 태그의 DOM을 가져옴(s가 붙은 것은 모든 자식의 Element를 가져오기 때문임)getElementsByTagName
을 통해서 Tag명을 통해서 해당 태그의 DOM을 가져올 수 있음(우리가 아는 HTML 태그명들)querySelector
와 querySelectorAll
임querySelector
는 유효한 식별자 하나만 가져오는데, ID도 가능하고 Class도 가능하고 태그도 가능함(#
은 ID, .
은 Class를 통해 가져옴)querySelectorAll
을 사용하게 되면 해당하는 모든 유효한 식별자를 다 가져옴(div.note)
등 여러가지 조합을 해서 식별자를 가져올 수 있음const nav = document.querySelector('#nav-access');
nav.querySelectorAll('li');
const searchButton = document.querySelector('.gN089b')
searchButton.classList.add('zero-base') // classList에 추가
searchButton.classList.remove('gN089b') // classList에 삭제
searchButton.classList.contains('zero-base') // classList에 포함되었는지 확인
const linkDirect = document.querySelector('.link_direct')
linkDirect.textContent
linkDirect.textContent = 'ZERO'
const partnerBox = document.querySelector('.partner_box')
const el = document.querySelector('.link_partner')
partnerBox.removeChild(el)
const el2 = document.createElement('div')
el2.textContent = 'NEW'
partnerBox.appendChild(el2)
// HTML을 통쨰로 넣어서 바꿀 수 있음
partnerBox.innerHTML = '<h3 class="title">Zero Base</h3>'
// 특정 요소 찾기
document.getElementById('아이디')
document.querySelector('css')
document.getElementByClassName('class')
document.getElementsByTagName('tag')
// 요소 만들기
document.createElement(tag)
Node.appendChild(Node)
Node.insertBefore(newNode, refNode)
// 인접 노드 접근
Node.children // 자식들
Node.firstElementChild, Node.lastElementChild // 첫번쨰, 마지막 자식
Node.previouseElementSibling, nextElementSibiling // 이전 형제, 이후 형제
Node.parentElement // 부모
<div id='test'>
테스트용
</div>
Node {
id: 'test',
tagName: 'div',
innerHTML: '테스트용',
style: 스타일 객체,
}
// DOM 변경하기
Node.innerHTML = '테스트용 수정';
Node.style.color = 'red';
Node.hidden = true;
Navigator {
language: 선호하는 언어,
maxTouchPoints: 동시 터치 지점 수,
userAgent: 브라우저 정보,
platform: 운영체제 정보
}
Location {
href: 현재 URL,
pathname: URL 경로,
reload: 새로고침 함수,
}
// location.href = '이동할 URL' => 직접 해당 사이트로 이동할 수 있음, 쓰기도 가능
History {
back: 뒤로 가기 수행,
forward: 앞으로 가기 수행,
}
window {
alert: 경고 메시지 출력 함수,
confirm: 확인 메시지 출력 함수,
prompt: 입력 메시지 출력 함수,
setTimeout: n초 후에 함수를 실행하는 타이머 함수,
setInterval: n초 마다 함수를 실행하는 타이머 함수
}
// 타이머 함수 사용법
let timerId = setTimeout(() => {
console.log('3 seconds end');
}, 3000);
clearTimeout(timerId);
let timerId = setInterval(() => {
console.log('every 3 seconds');
}, 3000);
clearInterval(timerId);
addEventListener
를 통해 다양한 이벤트를 추가하고 처리할 수 있음(click
등)const resetButton = document.querySelector('.reset');
resetButton.addEventListener('click', function () {
alert('안녕하세요');
});
이벤트 타입이 아주 많음, 클릭 뿐 아니라, 키다운, 등등, 이러한 이벤트가 감시되면 위처럼 타입을 정해둔 것이 트리거로 실행이 됨
활동이 발생했다는 신호로 함수(핸들러)를 연결시켜 활동 발생 시 동작하게(트리거되게) 함
대표적인 DOM 이벤트
click: 요소를 마우스 왼쪽 버튼으로 눌렀을 때 발생
change: 내부 값이 바뀌었을 때 발생
mouseover: 마우스 커서가 요소 위로 들어왔을 때 발생
mouseout: 마우스 커서가 요소 밖으로 나갔을 때 발생
focus: 요소에 포커스 했을 때 발생
Blur: 요소가 포커스를 잃었을 때 발생
keydown: 키보드를 눌렀을 때 발생
keyup: 키볻를 뗐을 때 발생
drag: 요소가 드래그 되었을 때 발생
...
// 예시
<div onclick='함수이름/>
Node.onclick = (event) => {};
Node.addEventListener(
event,
handler,
);
event.stopPropagation
으로 버블링을 중지시킬 수 있음// 함수를 넘기면 이벤트 객체를 넘겨줌(이벤트 타겟은 resetButton임)
const resetButton = document.querySelector('.reset');
resetButton.addEventListener('click', function (event) {
console.dir(event);
});
<button onclick="alert('HELLO WORLD')">
<strong class="increment">+</strong>
</button>
const resetButton = document.querySelector('.reset');
resetButton.addEventListener('click', function (event) {
console.dir(event);
});
resetButton.removeEventListener('click', function (event) {
console.dir(event);
});
const resetButton = document.querySelector('.reset');
const onReset = function (event) {
console.log(event.target);
}
resetButton.addEventListener('click', onReset);