<script>
태그에 있는 함수를 호출하는 방식EX1) 클릭시 이벤트 설정 첫번째 방법
<button onclick="처리로직">버튼 </button>
-> 클릭시 동작하는 함수를 요소(태그)에 직접 명시하는 방법
EX2) 클릭시 이벤트 설정 2번째 방법
<button onclick="함수호출">버튼</button>
-> 클릭시 동작하는 함수를 script 내에서 찾아서 동작시키는 방법
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<button onclick="alert('첫번째 방법');">첫번째 방법</button>
<button onclick="test();">두번째 방법</button>
<script>
function test() {
alert("두번째 방법");
}
</script>
</body></html>
EX1) 고전 이벤트 모델
var h = document.getElementById('id명'); h.onclick = function(){ 수행기능 설정; this.onclick=null; //해당 이벤트를 삭제 할 수 있음 };
EX2) 고전 이벤트 모델
document.getElementById('id명').onclick = function (){ 수행 기능 설정; };
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<button id="btn1">버튼1</button><br><br>
<button id="end">모든이벤트 종료</button><br><br>
<button id="start">모든이벤트 연결</button><br><br>
<script>
var btn1 = document.getElementById("btn1");
var btn2 = document.getElementById("btn2");
var btn3 = document.getElementById("btn3");
var btn4 = document.getElementById("btn4");
window.onload = function() {
startHand();
var end = document.getElementById("end");
end.onclick = function() {
alert("이벤트를 해제 했습니다.");
endHand();
}
var start = document.getElementById("start");
start.onclick = function() {
alert("이벤트를 연결 했습니다.");
startHand();
}
};
// onclick 이벤트 활성화
function startHand() {
btn1.onclick = function() {
alert("btn1")
};
}
// onclick 이벤트 비활성화
function endHand() {
btn1.onclick = "";
}
</script>
</body></html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<button id="btn1">버튼1</button><br>
<button id="on">이벤트 활성화</button><button id="off">이벤트 비활성화</button><br>
<span id="msg"></span>
<script>
var event = function() {
alert("이벤트가 잘 동작합니다.");
};
document.getElementById("btn1").onclick = event;
document.getElementById("off").onclick=function(){
document.getElementById("btn1").onclick=null;
document.getElementById("msg").innerHTML="이벤트가 비활성화 되었습니다.";
document.getElementById("msg").style.color='red';
};
document.getElementById("on").onclick=function(){
document.getElementById("btn1").onclick=event;
document.getElementById("msg").innerHTML="이벤트가 활성화 되었습니다.";
document.getElementById("msg").style.color='blue';
};
</script>
</body>
</html>
👨🎓 작성 방법
- 이벤트 설정
addEventListener('이벤트 이름', 핸들러)
- 이벤트 삭제
removeEventListener ('이벤트 이름', 핸들러)
var h = document.getElementById('id명');
// 방법1. -> 이벤트 삭제 방법 : 없음
h.addEventListener('click',function(){ alert("익명함수 형태"); });
// 방법2.
h.addEventListener('click',function test(){ alert("내부함수 형태"); });
// 이벤트 삭제 방법 : 내부에서 삭제 가능
h.addEventListener('click',function test(){ alert("내부함수 형태");
this.removeEventListener('click',test);
});
// 방법3
h.addEventListener('click',test);
function test(){
alert("외부함수 형태");
}
//이벤트 삭제 방법 : 필요한 경우 삭제 언제든 가능
h.removeEventListener('click',test);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<button id="btn1">버튼</button>
<br>
<button id="on">이벤트 활성화</button>
<button id="off">이벤트 비활성화</button>
<script>
document.getElementById("on").onclick = function() {
var btn1 = document.getElementById("btn1");
// 요소명.addEventListener('이벤트명', 동작할 함수명(외부함수 권장));
btn1.addEventListener('click', test);
};
document.getElementById("off").onclick = function() {
var btn1 = document.getElementById("btn1");
// 요소명.removeEventListener('이벤트명', 동작할 함수(외부함수 권장));
btn1.removeEventListener('click', test);
};
function test() {
alert("이벤트 잘 동작합니다.")
};
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<style>
.div-test {
border: 1px solid black;
padding: 20px;
}
.div1 {
background: red;
}
.div2 {
background: orange;
}
.div3 {
background: yellow;
}
.div4 {
background: green;
}
</style>
<div onclick="test1('빨강')" class="div-test div1">
<div onclick="test1('주황')" class="div-test div2">
<div onclick="test1('노랑')" class="div-test div3">
<div onclick="test1('초록')" class="div-test div4">
</div>
</div>
</div>
</div>
<script>
function test1(msg) {
alert(msg);
// window.event.stopPropagation(); //버블링 막는 함수
window.event.cancelBubble = true; //버블링을 막는 속성 (IE)
}
</script>
</body></html>