#
2. EVENT
#
목차
1. 개요 1.1. 예제1 1.2. 예제2
#
1. 개요
웹 브라우저에서 버튼을 클릭한다거나 mouse를 움직이거나 하는 모든 행위를 ‘이벤트’라고 합니다. 그리고 이벤트발생 시 함수의 실행문이 수행되도록 이벤트를 지정하는 것을 이벤트 핸들러라고 합니다. 이벤트 발생시 관련 정보를 가지고 있는 이벤트 객체를 전달받을수 있습니다.
#
1.1. 예제1
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h1>Events</h1>
<input class="form-control" type="number" style="padding: 30px; font-size: 30px; color: blue; border: 1px solid blue" />
<br />
<button style="background-color: blue; color: #fff; font-size: 20px">100 더하기</button>
<h1>The total is: <span>N/A</span></h1>
<h1>버튼</h1>
<div class="container">
<p>후라이드 좋아한다고 말해야 했지 어떤 날엔 화내야 했지 (오빠가 돈이 어디 있다고 양념을 사줘) 우린 데이트하면 후라이드 우리가 매일 먹고 또 먹던 후라이드 근데 오빠 나도 속물 인가봐 양념이라면 눈이 돌아갔지 양념이 오빠의 피 같아 지금은 후라이드 밖에 못 삼켜</p>
<button id="submit">치킨시켜</button>
</div>
</body>
</html>
#
[js] step1
var num = 100;
function calculate() {
var input = document.querySelector('.form-control');
var value = Number(input.value);
var totalValue = value + num;
var h1 = document.querySelectorAll('h1')[1];
var span = h1.querySelector('span');
span.innerText = totalValue;
}
var submitBtn = document.getElementById('submit'),
container = document.querySelector('.container');
submitBtn.addEventListener('click', function (event) {
alert('원 플러스 원 곱빼기도 되요?!');
});
container.addEventListener('mouseenter', mouseEnterContainer);
container.addEventListener('mouseleave', mouseLeaveContainer);
function mouseEnterContainer() {
container.style.background = '#fff';
console.log('옆 테이블 남는 거 싸가도 되요?');
}
function mouseLeaveContainer() {
container.style.background = 'pink';
}
document.addEventListener('keyup', function () {
console.log(event.keyCode);
});
#
[jq] step2
var num = 100;
function calculate() {
var input = $('.form-control');
var value = Number(input.val());
var totalValue = value + num;
var h1 = $('h1').eq(1);
var span = h1.find('span');
span.text(totalValue);
}
var submitBtn = $('#submit'),
container = $('.container');
submitBtn.click(function (event) {
alert('원 플러스 원 곱빼기도 되요?!');
});
container.on({ mouseenter: mouseEnterContainer, mouseleave: mouseLeaveContainer });
function mouseEnterContainer() {
container.css('background', '#fff');
console.log('옆 테이블 남는 거 싸가도 되요?');
}
function mouseLeaveContainer() {
container.css('background', 'pink');
}
$('body').keyup(function () {
console.log(event.keyCode);
});
#
1.2. 예제2
#
html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="wrap">
<h1>이벤트 연습</h1>
<p id="textZone">웹 브라우저에서 버튼을 클릭한다거나 mouse를 움직이거나 하는 모든 행위를 ‘이벤트’라고 합니다. 그리고 이벤트발생 시 함수의 실행문이 수행되도록 이벤트를 지정하는 것을 이벤트 핸들러라고 합니다.</p>
<h2>click 메서드</h2>
<p><button id="btn1">click</button></p>
<h2>mouseover 메서드</h2>
<p><button id="btn2" tabindex="1">mouseover</button></p>
<h2>bind 메서드</h2>
<p><button id="btn3">bind</button></p>
<h2>mouseleave 메서드</h2>
<div id="listWrap">
<h3>관련 사이트</h3>
<ul class="list1">
<li><a href="#">list1</a></li>
<li><a href="#">list2</a></li>
<li><a href="#">list3</a></li>
<li><a href="#">list3</a></li>
</ul>
</div>
<h2>hover 메서드</h2>
<h3><a href="#" class="hover">hover</a></h3>
</div>
</body>
</html>
#
css
* {
margin: 0;
padding: 0;
}
li {
list-style-type: none;
}
body {
font: 12px/1.5 '굴림', Gulim;
margin: 10px;
}
h2 {
margin-top: 30px;
}
a {
color: #333;
}
#textZone {
width: 700px;
}
#listWrap {
background: #cfcfcf;
width: 110px;
padding: 10px;
}
.list1 {
display: none;
}
- 상수초기화
const textZone = document.querySelector('#textZone');
- id="btn1" 클릭 했을때 id="textZone" 글자 색상을 파란색으로 변경
btn1.onclick = function () {
textZone.style.color = 'blue';
};
- id="btn2"에 마우스 오버 했을때 id="textZone" 배경 색상을 노란색으로 변경
const btn2 = document.querySelector('#btn2');
btn2.onmouseover = function () {
textZone.style.backgroundColor = 'yellow';
};
- id="btn2"에 포커스가 생겼을때 id="textZone" 배경 색상을 노란색으로 변경
btn2.onfocus = function () {
textZone.style.backgroundColor = 'yellow';
};
- 두개이상의 이벤트(mouseover,click,focus)를 등록시킬때
const btn3 = document.querySelector('#btn3');
function textZone4() {
textZone.style.color = 'green';
textZone.style.fontWeight = 'bold';
}
btn3.addEventListener('mouseover', textZone4);
btn3.addEventListener('focus', textZone4);
btn3.addEventListener('click', function () {
alert();
});
btn3.addEventListener('click', function () {
textZone.style.marginLeft = '80px';
});
- property listener 로 이벤트 등록시 같은 이벤트 덮어씌워짐
btn3.onmouseover = textZone4;
btn3.onfocus = textZone4;
btn3.onclick = function () {
alert();
};
btn3.onclick = function () {
textZone.style.marginLeft = '80px';
};
- id="listWrap"에 마우스가 올라가 있으면 class="list1" 을 블록요소 변경합니다. mouseover와 비슷
const listWrap = document.querySelector('#listWrap');
const list1 = document.querySelector('.list1');
listWrap.onmouseenter = function () {
list1.style.display = 'block';
};
- id="listWrap"에서 마우스가 벗어나면 class="list1" 을 블록요소 변경합니다. mouseout과 비슷
listWrap.onmouseleave = function () {
list1.style.display = 'none';
};
- class="hover"인 요소에 마우스를 올렸을땐 함수1을 벗어났을때에는 함수2를 실행 합니다.
let hover = document.querySelector('.hover');
hover.addEventListener('mouseover', function () {
this.style.color = 'aqua'; //함수1
});
hover.addEventListener('mouseout', function () {
this.style.color = 'red'; //함수2
});
jquery 라이브러리 로드
<script src='https://code.jquery.com/jquery-3.7.1.slim.min.js'></script>
id="btn1" 클릭 했을때 id="textZone" 글자 색상을 파란색으로 변경
const btn1 = $('#btn1');
btn1.on('click', () => {
textZone.css('color', 'blue');
});
- id="btn2"에 마우스 오버 했을때 id="textZone" 배경 색상을 노란색으로 변경
const btn2 = $('#btn2');
btn2.on('mouseover', function () {
textZone.css('backgroundColor', 'yellow');
});
- id="btn2"에 포커스가 생겼을때 id="textZone" 배경 색상을 노란색으로 변경
btn2.on('focus', function () {
textZone.css('backgroundColor', 'yellow');
});
- 두개이상의 이벤트(mouseover,click,focus)를 등록시킬때
const btn3 = $('#btn3');
btn3.on({
'mouseover focus': function () {
textZone4();
},
click: function () {
alert();
textZone.css('margin-left', '80px');
},
});
function textZone4() {
textZone.css('color', 'green');
textZone.css('fontWeight', 'bold');
}
- id="listWrap"에 마우스가 올라가 있으면 class="list1" 을 블록요소 변경합니다. mouseover와 비슷
$('.hover').hover(
function () {
$(this).css('color', 'aqua');
},
function () {
$(this).css('color', 'red');
}
);
- id="listWrap"에서 마우스가 벗어나면 class="list1" 을 블록요소 변경합니다. mouseout과 비슷
- class="hover"인 요소에 마우스를 올렸을땐 함수1을 벗어났을때에는 함수2를 실행 합니다
$('.hover').on({
mouseenter: function () {
$(this).css('color','aqua');
},
mouseleave: function () {
$(this).css('color','red');
},
});