반응형
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id ="btn">click</button>
<script>
var btn = document.getElementById("btn");
btn.onclick = function(){
alert("event 1");
}
btn.onclick = function(){
alert("event 2");
}
</script>
</body>
</html>
기존의 이벤트 핸들러는 해당 요소에 하나의 이벤트만 적용시킬 수 있었습니다.
하지만 이벤트 리스너를 이용해 하나의 요소에 여러 개 이벤트 처리가 가능하게 됩니다.
위와 같은경우에는 두번째의 onclick으로 덮어씌워지게 됩니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id ="btn">click</button>
<script>
var btn = document.getElementById('btn');
btn.addEventListener('click',function(){
alert('event 1');
});
btn.addEventListener('click',function(){
alert('event 2');
});
</script>
</body>
</html>
이와 같이 addEventListener를 이용해 클릭했을 때 콜백메소드를 호출합니다. 그래서 두개의 이벤트가 순차적으로 작동하게 됩니다.
.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
#box{
width: 100px; height:100px;
border: 3px solid black;
}
#box.hover{
background-color:orange;
color:white;
}
</style>
<body>
<div id ="box">
<p>마우스를 올려 주세요</p>
</div>
<script>
var btn = document.getElementById('box');
btn.addEventListener('mouseover',function(){
box.setAttribute('class','hover');
});
btn.addEventListener('mouseout',function(){
box.removeAttribute('class');
});
</script>
</body>
</html>
마우스를 올렸을 때 class="hover" 속성을 추가시키고 마우스가 나가면 class속성을 없애버립니다.
이벤트 리스너의 특징은 on을 안 붙힙니다 앞에 테이블로 적어뒀던 onclick, onMouseover 등에서 on을 뺍니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
</style>
<body>
<form id ="frm">
<fieldset>
<legend>주소록</legend>
<textarea name ="txt" id="txt2" cols ="30" rows="10">입력해주세요</textarea><br>
<input type ="submit" id = "q" value ="불러오기">
</fieldset>
</form>
<script>
var address =["김철수","email: kcs@gmail.com"]; // 미리 값을 준비
var q = document.getElementById('frm'); // from id값 받아온다.
function addr_search(){
var textarea = q.txt; // q의 name값을 가져옴 q.txt 여기서 txt는 name값
textarea.value = '이름 / 주소 \n'; // .value란 해당 태그에 해당하는 글자를 의미 여기선 입력해주세요 이다.
textarea.value += address[0] + ' , ' + address[1] + '\n'; // 준비한 값들을 넣는 과정
}
q.addEventListener('submit', function(){ // 버튼을 눌렀을 때 function()이하의 내용이 작동한다.
event.preventDefault(); // 폼 전송 기본 이벤트 발생 안 하도록 함
addr_search(); // addr_search 메소드를 실행시킴
})
</script>
</body>
</html>
반응형