코딩/자바스크립트

JS / 문서객체생성과 이벤트

민여 2022. 4. 4. 20:28

정적생성 - HTML문서에 태그로 직접 작성하여 생성

동적생성 - 자바스크립트로 문서객체 생성

 

innerHTML속성을 이용한 문서객체 생성

= 선택된 문서객체에 HTML코드를 문자열로 처리해주는 속성 

 

코드예시

 

body

<h1 id="text"></h1>

 

script

var text = document.getElementById('text');

text.innerHTML='<a href="#">링크태그입니다.</a>';

 

=>빈 화면에 링크태그입니다 라고 기입되어 나옴 

=>f12 elements 부분을 보면 h1태그 안에 자손으로 a태그가 들어간걸 확인가능

 

document.write()메서드

※준비구문 사용하게 되면 기존 문서객체를 모두 삭제해버리니 주의해서 써야함  

 

document.write('<h2>제목</h2>');

 

createElement()메서드

※요소를 생성해주는 메서드로 생성한 것을 삽입하는 appendChild()메서드와 함께 사용

 

body에

<h1>제목태그1</h1>

script에

var h2 = document.createElement('h2');

h2.innerHTML = '제목태그2';

document.body.appendChild(h2);

 

(document.body는 body태그를 선택하는 속성)

 

속성컨트롤 메서드

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

 

텍스트생성 종류 설명
innerHTML innerHTML은 문자열을 문서객체에 자손으로 추가해줍니다. 대신 문자열에 태그가 있으면 인식이 됩니다.
innerText innerText는 문자열을 문서객체에 자손으로 추가해줍니다.  대신 문자열에 태그가 있어도 인식이 되지않고 문자열로 반환합니다.
그리고 보여지는 텍스트만 인식하고 display: none;으로 처리된 것은 읽지 않습니다. 
textContent textContent는 Node의 속성으로 해당 노드가 가지고 있는 텍스트값을 그래도 읽습니다. 숨겨진 텍스트(display: none;)도 인식합니다.
자손관련 메서드 종류 설명
removeChild(요소) 자손요소를 제거합니다. 
appendChild(요소) 자손요소를 추가합니다.
replaceChild(새로운요소,이전요소) 자손요소를 새롭게 변경합니다.

 

 

이벤트 종류 문법
고전이벤트 문서객체선택.on이벤트타입명 = function(){ }
addEventListener() 문서객체선택.addEventListener('이벤트타입명',function(){});
removeEventListener() 문서객체선택.removeEventListener('이벤트타입명',function(){});
인라인이벤트 <태그명 on이벤트타입명=""></태그명>
태그의 속성으로 이벤트를 작성

고정 이벤트 예시 

body

<h1 id="text">제목태그</h1>

script

var text = document.getElementById('text');

text.onclick=function(){

   this.style.color = 'red';

}

//제목태그를 클릭하면 색깔이 빨간색으로 바뀐다 

 

addEventListener() 예시 

body

<h1 id="text">제목태그</h1>

script

var text = document.getElementById('text');

text.addEventListener('click',function(){

  this.style.color = 'red'l

});

//제목태그를 클릭하면 색깔이 빨간색으로 바뀐다 

 

removeEventListener() 예시 

body

<h1 id="text">제목태그</h1>

script

var text = document.getElementById('text');

text.addEventListener('click',function(){

  this.style.color = 'red'l

});                                                         // h1태그를 클릭하면 글자색이 빨간색으로 바뀌도록 설정

 

function mouserOverRemove(){

  this.style.color = 'yellow';

  this.style.backgroundColor = 'black'; 

}

text.addEventListener('mouseover',mouseOverRemove);             //마우스올리면 글자는 노란색 배경 검정색 설정 

 

text.addEventListener('mouseout' .function(){

  this.style.color = 'black'; 

  this.style.backgroundColor = 'transparent';                         //마우스내리면 원래대로 처리 

});

setTimeout(function(){   

  text.removeEventListener('mouseover'.mouseOverRemove);

},5000);                                                                           //5초뒤 mouserover이벤트 제거 

 

 

인라인이벤트 

예시 

body

<h1 id="text" onclick="this.style.color='red';">제목태그</h1>

 

이벤트타입 종류 문법
abort 미디어의 로드가 중단되면 이벤트가 발생
afterprint 페이지가 인쇄를 시작하거나, 인쇄 대화상자가 닫힌 경우 이벤트가 발생
animationend css 애니메이션이 완료되면 이벤트가 발생
animationiteration css 애니메이션이 반복될때 발생하는 이벤트
animationstart css 애니메이션이 시작할때 이벤트가 발생
beforeprint 페이지가 인쇄되려고 할때 이벤트가 발생
beforeunload 문서(document)가 unload되기 전에 이벤트가 발생
 blur 초점받은 요소에서 초점을 벗어날때 이벤트가 발생
canplay 브라우저가 미디어 재생을 시작할 수 있을때 발생(시작되기 전 충분히 버퍼링 된 경우)
canplaythrough 브라우저가 버퍼링을 위해 중지하지 않고, 미디어를 통해 재생할 수 있을 때 발생
change 요소의 무언가가 변경되었을때 이벤트가 발생(<input>, <select>, <textarea>에서 발생)
click 요소를 클릭했을 때 이벤트가 발생
contextmenu 사용자가 마우스 오른쪽 버튼을 클릭하여 컨텍스트메뉴를 열때 이벤트가 발생
copy 사용자가 요소의 내용을 복사할 때 이벤트가 발생
cut 사용자가 요소의 내용을 잘라내기하였을때 이벤트가 발생
dblclick 요소를 더블클릭했을때 이벤트가 발생
drag 요소를 마우스로 드래그(끌때)할 때 이벤트가 발생
dragend 사용자가 요소 드래그를 완료하면 이벤트가 발생
dragenter 드래그 한 요소가 드롭 대상에 들어올 때 이벤트가 발생
dragleave 드래그 한 요소가 드롭 대상을 벗어날 때 이벤트가 발생
dragover 드래그 한 요소가 드롭 대상 위에 있을 때 이벤트가 발생
dragstart 사용자가 요소를 끌기 시작할 때 이벤트가 발생
drop 드래그한 요소를 드롭 대상에 놓으면 이벤트가 발생
durationchange 미디어 길이가 변경되면 이벤트가 발생
ended 미디어가 끝날때 발생("감사합니다"와 같은 메시지에 유용)
error 외부 파일을 로드하는 동안 오류가 발생하면 이벤트가 발생
 focus 요소가 초점을 받았을때 이벤트가 발생
 focusin 요소가 초점을 받으려고 할때 이벤트가 발생
 focusout 요소가 초점을 잃을 때 이벤트가 발생
 fullscreenchage 요소가 전체화면 모드로 표시될때 이벤트가 발생
fullscreenerror  요소를 전체화면모드로 표시할 수 없을때 발생
 hashchange URL의 앵커부분이 변경된 경우 이벤트가 발생
 input 요소가 사용자 입력을 받을 때 이벤트가 발생
invalid  요소가 유효하지 않을 때 이벤트가 발생
 keydown 사용자가 키를 누를때 이벤트가 발생(특수키 포함)
 keypress 사용자가 키를 누를때 이벤트가 발생(특수키 제외)
keyup 사용자가 키를 눌렀다 뗐을때 이벤트가 발생
load 객체가 로드되면 이벤트가 발생
loadeddata 미디어 데이터가 로드되면 이벤트가 발생
loadedmetadata 메타데이터(ex) 크기 및 기간)가 로드될 때 이벤트가 발생
loadstart 브라우저가 지정된 미디어를 찾기 시작할 때 이벤트가 발생
message 이벤트 소스를 통해 메세지가 수신되면 이벤트가 발생
mousedown 마우스가 요소를 꾹 누르고 있을때 이벤트가 발생
mouseenter 마우스가 요소로 들어갔을 때 이벤트가 발생
mouseleave 마우스가 요소에서 떠날 때 이벤트가 발생
mousemove 마우스가 요소 위에서 움직일 때 이벤트가 발생
mouseover 마우스를 요소 위에 올렸을때 이벤트가 발생(자손요소로 가도 또 이벤트가 발생)
mouseout 마우스를 요소 위에 올렸다 뗐을때 이벤트가 발생(자손요소에서 벗어나도 또 이벤트가 발생)
mouseup 마우스로 요소를 눌렀다 뗐을때 이벤트가 발생
mousewheel 마우스 휠을 움직일때 이벤트가 발생, 현재 제거되어 wheel이벤트로 변경
offline 브라우저가 오프라인으로 작업을 시작할 때 이벤트가 발생
online 브라우저가 온라인으로 작업을 시작할 때 이벤트가 발생
open 이벤트 소스와 연결이 열리면 이벤트가 발생
pagehide 사용자가 웹페이지를 벗어날 때 이벤트가 발생
pageshow 사용자가 웹페이지를 탐색할 때 이벤트가 발생
paste 사용자가 요소에 일부 콘텐츠를 붙여 넣을 때 이벤트가 발생
pause 미디어가 사용자에 의해 또는 프로그래밍방식으로 일시 중지될 때 이벤트가 발생
play 미디어가 시작되거나 더이상 일시중지되지 않을때 이벤트가 발생
playing 미디어가 버퍼링을 위해 일시 중지 또는 중지된 후 재생될때 이벤트가 발생
popstate 창의 히스토리가 변경되면 이벤트가 발생
progress 브라우저가 미디어 데이터를 가져오는(미디어 다운로드) 중일때 이벤트가 발생
ratechange 미디어의 재생 속도가 변경되면 이벤트가 발생
resize 창사이즈가 변경될때 이벤트가 발생
reset 폼이 reset(reset버튼을 눌렀을때)되었을때 이벤트가 발생
scroll 요소의 스크롤바가 스크롤될 때 이벤트가 발생
search 사용자가 검색 필드에 무언가를 쓸 때 이벤트가 발생(<input type="search">)
seeked 사용자가 미디어의 새 위치로 이동/건너뛰기를 완료하면 이벤트가 발생
seeking 사용자가 미디어의 새 위치로 이동/건너뛰기를 시작할 때 이벤트가 발생
select 사용자가 일부 텍스트를 선택한 후 이벤트가 발생(<input>, <textarea>)
show <menu>요소가 컨텍스트 메뉴로 표시될 때 이벤트가 발생
stalled 브라우저가 미디어 데이터를 가져오려고 하지만 데이터를 사용할 수 없을 때 이벤트가 발생
storage 웹 저장소 영역이 업데이트되면 이벤트가 발생
submit 폼 데이터가 전송되면 이벤트가 발생
suspend 브라우저가 의도록적으로 미디어 데이터를 가져오지 못할 때 이벤트가 발생
timeupdate 미디어의 재생위치가 변경되었을 때(ex) 사용자가 빨리감기처리) 이벤트가 발생
toggle 사용자가 <details>요소를 열거나 닫을 때 이벤트가 발생
touchcancel 터치가 중단되면 이벤트가 발생
touchend 터치스크린에서 손가락을 떼면 이벤트가 발생
touchmove 화면에서 손가락을 끌면 이벤트가 발생
touchstart 화면에 손가락을 대면 이벤트가 발생
transitionend CSS 전환이 완료되면 이벤트가 발생
unload 페이지가 언로드(unload)가 되면 이벤트가 발생
volumechange 미디어의 볼륨이 변경되었을 때 이벤트가 발생(음소거 포함)
waiting 미디어가 일시 중지 되었지만 다시 시작할 것으로 예상될 때 이벤트 발생(미디어가 더 많은 데이터를 버퍼링하기 위해 일지중지한 경우)
wheel 마우스 휠이 아래나 위로 롤업될 때 이벤트 발생

 

이벤트 객체의 속성과 메서드 

- 이벤트객체는 DOM과 관련된 이벤트가 발생되면 발생되는 관련 정보를 저장하는 객체

 

문법 

//고전이벤트 

문서객체선택.on이벤트타입명 = function(이벤트객체매개변수){

};

//addEventListener 

문서객체선택.addEventListener ('이벤트타입명'.function(이벤트객체매개변수){

});

 

 

공통 이벤트 객체 속성과 메서드 종류 

종류 설명
bubbles 이벤트가 버블링되는지 true/false로 처리함
cancleable 이벤트의 기본 동작 취소가능 여부를 true/false로 처리함
currentTarget 현재 이벤트를 처리 중인 요소를 반환
defaultPrevented true면 preventDefault()메서드가 호출상태
eventPhase 현재 평가 중인 이벤트 흐름단계를 반환(1: 캡쳐링, 2: 타깃, 3: 버블링)
stopImmediatePropagation( ) 이벤트 캡처링, 이벤트 버블링 모두 취소하며 다른 이벤트 핸들러 호출을 막음
stopPropagation() 이벤트 캡처링, 이벤트 버블링 모두 취소하며 bubbles가 true일때 기능함.
target 이벤트를 trigger한 요소를 반환
type 발생된 이벤트 타입을 반환
view 이벤트가 발생한 window개체에 대한 참조를 반환

이벤트 흐름의 3단계 

종류 설명
캡처링(capturing) 이벤트가 하위 요소로 전파되는 단계
타깃(target) 이벤트가 실제 타깃 요소에 전달되는 단계
버블링(bubbling) 이벤트가 상위요소로 전파되는 단계

h1안에 a가 있다고 가정 

a태그를 클릭하면 부모 h1도 a태그도 모두 이벤트가 일어남 

이것을 이벤트 버블링이라고 함 

 

 

마우스 이벤트 객체 속성과 메서드 종류

altKey 마우스 이벤트가 발생되었을때 [Alt]키가 눌렀는지를 true/false로 반환
button 마우스 이벤트가 발생되었을때 눌린 마우스 버튼을 반환
buttons 마우스 이벤트가 발생되었을때 눌린 마우스 버튼들을 반환
clientX 마우스 이벤트가 발생되었을때 현재 창을 기준으로 마우스 포인터의 X축 좌표를 반환
clientY 마우스 이벤트가 발생되었을때 현재 창을 기준으로 마우스 포인터의 Y축 좌표를 반환
ctrlKey 마우스 이벤트가 발생되었을때 [Ctrl]키가 눌렸는지를 true/false로 반환
getModifierState() 삽입/삭제의 영향을 받는 대상 범위를 포함하는 배열을 반환
metaKey 마우스 이벤트가 발생되었을때 메타키가 눌렸는지를 true/false로 반환
** 메타키(metakey) : 윈도우에서는 윈도우키를 의미하는데, 보통 OS별로 다르기 때문에 메타키라고 부름
MovementX 마지막 mousemove 이벤트 위치를 기준으로 마우스포인터의 X축 좌표 반환
MovementY 마지막 mousemove 이벤트 위치를 기준으로 마우스포인터의 Y축 좌표 반환
offsetX 대상 요소의 가장자리 위치를 기준으로 마우스포인터의 X축 좌표 반환
offsetY 대상 요소의 가장자리 위치를 기준으로 마우스포인터의 Y축 좌표 반환
pageX 마우스 이벤트가 발생되었을 때 문서 기준으로 마우스포인터의 X축 좌표 반환
pageY 마우스 이벤트가 발생되었을 때 문서 기준으로 마우스포인터의 Y축 좌표 반환
region 마우스 이벤트 영향을 받는 히트영역의 id를 반환, 영역이 아니면 null반환
relatedTarget 마우스 이벤트를 발생시킨 요소와 관련된 요소(있는 경우만) 반환 
screenX 마우스 이벤트가 발생되었을 때 화면을 기준으로 마우스포인터의 X축 좌표 반환
screenY 마우스 이벤트가 발생되었을 때 화면을 기준으로 마우스포인터의 Y축 좌표 반환
shiftKey 마우스 이벤트가 발생되었을 때 [Shift]키가 눌렀는지를 true/false로 반환
which 마우스 이벤트가 발생되었을때 어떤 마우스 버튼을 눌렀는지를 반환

 

//마우스를 움직일때 원요소가 마우스를 따라다니도록 처리 

<style>

#circle{ position: absolute; left: 0; top: 0; background-color: navy;

width: 50px; height: 50px; border-radius: 25px; }

</style>

<body>

<div id="circle"></div>

<script>

//1. 원을 문서객체 변수에 담기

var circle = document.getElementById('circle');

//2. body전체에서 마우스를 움직일때 원이 마우스포인터 따라다니게 처리

document.onmousemove = function(e){ var x = e.clientX; var y = e.clientY;

//25를 뺀 이유는 원의 반지름으로 포인터가 가운데 오도록 처리

circle.style.left = (x - 25) + 'px'; circle.style.top = (y - 25) + 'px'; }

</script>

</body>

 

 

키보드 이벤트 객체 속성과 메서드 종류 

종류 설명
altKey 키보드 이벤트가 발생되었을때 [Alt]키가 눌렀는지를 true/false로 반환
charCode keypress 이벤트가 발생되었을때 눌린 키의 유니코드 문자 코드를 반환
code 키보드 이벤크가 발생되었을때 눌린 키의 코드를 반환
ctrlKey 키보드 이벤트가 발생되었을때 [Ctrl]키가 눌렸는지를 true/false로 반환
isComposing 이벤크 상태가 작성 중인지 여부를 true/false로 반환
key 이벤트가 나타내는 키의 키값을 반환
keyCode 키보드 이벤트가 발생되었을때 눌린 키의 유니코드 키코드를 반환
location 키보드 또는 장치의 키 위치를 반환
metaKey 키보드 이벤트가 발생되었을때 메타키가 눌렸는지를 true/false로 반환
** 메타키(metakey) : 윈도우에서는 윈도우키를 의미하는데, 보통 OS별로 다르기 때문에 메타키라고 부름
repeat 키가 반복적으로 눌리고 있는지 여부를 반환
shiftKey 키보드 이벤트가 발생되었을 때 [Shift]키가 눌렀는지를 true/false로 반환
which 키보드 이벤트가 발생되었을 때 눌린 키의 유니코드 문자 코드를 반환

 

마우스휠 이벤트 객체 속성과 메서드 종류 

종류 설명
deltaX 마우스 휠의 가로 스크롤 정도를 반환(x축)
- 보통 오른쪽으로 가면 양수, 왼쪽으로 이동하면 음수
deltaY 마우스 휠의 세로 스크롤 정도를 반환(y축)
- 보통 아래쪽으로 가면 양수, 위쪽으로 가면 음수
deltaZ z축에 대한 마우스 휠의 스크롤 정도를 반환
deltaMode 델타값(픽셀, 라인 또는 페이지)의 측정 단위를 나타내는 숫자를 반환

 

 

 

 

 

 

 

 

 

 

'코딩 > 자바스크립트' 카테고리의 다른 글

JS / 정규표현식 RegExp  (0) 2022.04.05
JS / DOM Node와 Forms  (0) 2022.04.05
JS / 코딩앙마 유튜브강의 노트  (0) 2022.04.04
JS / DOM - 속성, 메서드, 준비구문  (0) 2022.04.04
JS / BOM - navigator, screen  (0) 2022.04.01