7. key
이벤트 이름 설명 발생 순서
keydown 키보드가 눌러질 때 발생 1
keypress 글자가 입력될 때 발생(한글로 사용할 수 없음) 2
keyup 키보드가 떼어질 때 발생 3
<title>key 이벤트</title>
<script type="text/javascript">
window.onload=function(){
document.getElementById('content').onkeyup=function(){
let inputLength = this.value.length;
let remain = 150 - inputLength;
let letter = document.getElementById('letter');
letter.innerHTML = remain;
};
};
</script>
</head>
<body>
<h4 id="letter">150</h4>
<textarea rows="5" cols="30" name="content" id="content"></textarea>
</body>
</html>
8. isNaN
<title>isNaN함수 활용</title>
<script type="text/javascript">
window.onload=function(){
document.getElementById('check_age').onclick=function(){
let age = document.getElementById('age');
if(age.value.trim()==''){
alert('나이를 입력하세요!');
age.value = '';
age.focus();
return;
}
if(isNaN(age.value)){
alert('숫자만 입력 가능합니다!');
age.value = '';
age.focus();
return;
}
alert('나이는 ' + age.value + '살입니다.');
};
};
</script>
</head>
<body>
<form>
<input type="text" name="age" id="age" size="20">
<input type="button" value="나이 확인" id="check_age">
</form>
</body>
</html>
9. submit
<title>submit 이벤트</title>
<script type="text/javascript">
window.onload=function(){
document.getElementById('register_form').onsubmit=function(){
let name = document.getElementById('name');
if(name.value.trim()==''){
alert('이름을 입력하세요');
name.value = '';
name.focus();
return false;
}
let id = document.getElementById('id');
if(id.value.trim()==''){
alert('아이디를 입력하세요');
id.value = '';
id.focus();
return false;
}
let password = document.getElementById('password');
if(password.value.trim()==''){
alert('비밀번호를 입력하세요');
password.value = '';
password.focus();
return false;
}
};
};
</script>
</head>
<body>
<form id="register_form" action="a.jsp" method="post">
<fieldset>
<legend>회원가입</legend>
<ul>
<li>
<label for="name">이름</label>
<input type="text" name="name" id="name" size="10" maxlength="10">
</li>
<li>
<label for="id">아이디</label>
<input type="text" name="id" id="id" size="10" maxlength="10">
</li>
<li>
<label for="password">비밀번호</label>
<input type="password" name="password" id="password" size="10" maxlength="10">
</li>
</ul>
<div align="center">
<input type="submit" value="전송">
</div>
</fieldset>
</form>
</body>
</html>
10. gallery
<meta charset="UTF-8">
<title>갤러리</title>
<style type="text/css">
*{
margin:0;
padding:0;
}
#galleryWrap{
width:520px;
margin:0 auto;
text-align:center;
}
#galleryWrap img{
vertical-align:middle;
}
img#prev, img#next{
cursor:pointer;
}
</style>
<script type="text/javascript">
window.onload=function(){
let num = 1;
let gallery = document.getElementById('gallery');
document.getElementById('prev').onclick=function(){
num--;
if(num<1) num=7;
gallery.src = '../files/img' + num + '.jpg';
};
document.getElementById('next').onclick=function(){
num++;
if(num>7) num=1;
gallery.src = '../files/img' + num + '.jpg';
};
};
</script>
</head>
<body>
<div id="galleryWrap">
<h1>이미지 넘기기</h1>
<p>
<img src="../files/left_btn.png" alt="이전 그림 보기" id="prev">
<img src="../files/img1.jpg" alt="갤러리 그림" id="gallery">
<img src="../files/right_btn.png" alt="다음 그림 보기" id="next">
</p>
</div>
</body>
</html>
11.default
<title>기본 이벤트</title>
<script type="text/javascript">
window.onload=function(){
document.getElementById('alink').onclick=function(){
alert('이벤트 연결');
return false;
};
document.getElementById('myForm').onsubmit=function(){
let name = document.getElementById('name');
alert(name.value);
return false;
};
};
</script>
</head>
<body>
<a id="alink" href="https://www.daum.net">이동</a><br><br>
<form id="myForm" action="a.jsp" method="post">
이름 <input type="text" name="name" id="name">
<input type="submit" value="전송">
</form>
</body>
</html>
12. propagation
이벤트 전파(전달) : 특정 태그에 이벤트가 발생하면 다른 태그로 이벤트가 전달되는 현상
이벤트 버블링 : 자식 노드에서 부모 노드 순으로 이벤트를 실행하는 것을 의미
div
|
div ^ 자식 노드에서 부모 노드로 이벤트 전파
| |
p |
| |
span <-- 이벤트 발생
이벤트 캡쳐링 : 부모 노드에서 자식 노드 순으로 이벤트를 실행하는 것을 의미(요즘 지원하지는 않음)
<title>이벤트 전달</title>
<script type="text/javascript">
window.onload=function(){
document.getElementById('space').onclick=function(){
alert('space');
this.style.backgroundColor='pink';
};
document.getElementById('paragraph').onclick=function(event){
alert('paragraph');
this.style.backgroundColor='yellow';
event.stopPropagation();
};
};
</script>
</head>
<body>
<div id="space">Space
<p id="paragraph">Paragraph</p>
</div>
</body>
</html>
13. level2
[DOM Level2 표준 이벤트 모델]
addEventListener(eventType,eventHandler,useCapture) : 이벤트 연결
removeEventListener(eventType,eventHandler) : 이벤트 제거
<title>표준 이벤트 모델</title>
<script type="text/javascript">
window.addEventListener('load',function(){
let header = document.getElementById('header');
header.addEventListener('click',function(){
alert('CLICK');
},false);
},false);
</script>
</head>
<body>
<h1 id="header">Click</h1>
</body>
</html>