πŸ“š [JavaScript] Event

이가은·2022λ…„ 5μ›” 8일
0

JavaScript

λͺ©λ‘ 보기
12/13

πŸ“• 이벀트

1. μ΄λ²€νŠΈλž€?

μ›Ή λ¬Έμ„œ μ˜μ—­ μ•ˆμ—μ„œ μ›Ή λΈŒλΌμš°μ €λ‚˜ μ‚¬μš©μžκ°€ ν–‰ν•˜λŠ” μ–΄λ–€ λ™μž‘

예) ν‚€λ³΄λ“œμ—μ„œ ν‚€λ₯Ό λˆ„λ₯΄λŠ” 것, μ›Ή λΈŒλΌμš°μ €μ—μ„œ μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ₯Ό λΆˆλŸ¬μ˜€λŠ” 것

2) 이벀트 νƒ€μž…

λ°œμƒν•œ 이벀트의 μ’…λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄

🎈 예제

<p onclick="changeText(this)">이 λ¬Έμžμ—΄μ„ ν΄λ¦­ν•˜λ©΄</p>
...
<script>
function changeText(element) {
    element.innerHTML = "λ¬Έμžμ—΄μ˜ λ‚΄μš©μ΄ 바뀐닀";
} //λ¬Έμžμ—΄μ„ ν΄λ¦­ν•˜λ©΄ λ¬Έμžμ—΄μ˜ λ‚΄μš©μ΄ 바뀐닀
</script>

πŸ“™ 이벀트 λ¦¬μŠ€λ„ˆ

μ›Ή λ¬Έμ„œμ—μ„œ μ΄λ²€νŠΈκ°€ λ°œμƒν•˜λ©΄ μ²˜λ¦¬ν•˜λŠ” ν•¨μˆ˜

🎁 문법

<νƒœκ·Έ on이벀트λͺ… = "ν•¨μˆ˜λͺ…">

🎈 예제

<ul>
	<li><a href="" onclick="alert('λ²„νŠΌμ„ ν΄λ¦­ν–ˆμŠ΅λ‹ˆλ‹€.')">Green</a></li>
    <li><a href="" onclick="alert('λ²„νŠΌμ„ ν΄λ¦­ν–ˆμŠ΅λ‹ˆλ‹€.')">Orange</a></li>
    <li><a href="" onclick="alert('λ²„νŠΌμ„ ν΄λ¦­ν–ˆμŠ΅λ‹ˆλ‹€.')">Purple</a></li>
</ul> //λͺ©λ‘μ˜ 각 λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ μ•Œλ¦Ό 창을 ν‘œμ‹œν•œλ‹€

πŸ“’ 이벀트 λ¦¬μŠ€λ„ˆ 등둝

1. κ°μ²΄λ‚˜ μš”μ†Œμ— ν”„λ‘œνΌν‹°λ‘œ λ“±λ‘ν•˜λŠ” 방법

β‘  μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œμ—μ„œ ν”„λ‘œνΌν‹°λ‘œ 등둝

🎈 예제

<script>
window.onload = function() { //HTML λ¬Έμ„œκ°€ λ‘œλ“œλ  λ•Œ μ‹€ν–‰
	var text = document.getElementById("text") //아이디가 text인 μš”μ†Œ 선택
    text.innerHTML = "HTML λ¬Έμ„œκ°€ λ‘œλ“œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.";
}
</script>

βœ” 이벀트 νƒ€μž…λ³„λ‘œ 였직 ν•˜λ‚˜μ˜ 이벀트 λ¦¬μŠ€λ„ˆλ§Œμ„ 등둝할 수 μžˆλ‹€λŠ” 단점이 μžˆλ‹€

β‘‘ HTML νƒœκ·Έμ— μ†μ„±μœΌλ‘œ 등둝

🎈 예제

<script>
<p onclick = "alert('λ¬Έμžμ—΄μ„ ν΄λ¦­ν–ˆμ–΄μš”')">이 λ¬Έμžμ—΄μ„ ν΄λ¦­ν•΄λ³΄μ„Έμš”!</p>
//λ¬Έμžμ—΄μ„ ν΄λ¦­ν•˜λ©΄ λ¬Έμžμ—΄μ„ ν΄λ¦­ν–ˆλ‹€λŠ” μ•ŒλžŒμ΄ λœ¬λ‹€
</script>

βœ” HTML μ½”λ“œμ— μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œκ°€ μΆ”κ°€λ¨μœΌλ‘œμ¨ 가독성이 μ•ˆ 쒋아지고 μœ μ§€λ³΄μˆ˜λ„ νž˜λ“€μ–΄μ§„λ‹€λŠ” 단점이 μžˆλ‹€

2. κ°μ²΄λ‚˜ μš”μ†Œμ˜ λ©”μ†Œλ“œμ— 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό μ „λ‹¬ν•˜λŠ” 방법

β‘  addEventListener()

거의 λͺ¨λ“  λΈŒλΌμš°μ €μ—μ„œ μ§€μ›ν•˜λŠ” 이벀트 λ¦¬μŠ€λ„ˆ 등둝을 μœ„ν•œ λ©”μ†Œλ“œ

🎁 문법

λŒ€μƒκ°μ²΄.addEventListener(이벀트λͺ…, μ‹€ν–‰ν• μ΄λ²€νŠΈλ¦¬μŠ€λ„ˆ, μ΄λ²€νŠΈμ „νŒŒλ°©μ‹)

이벀트 λͺ… : 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό 등둝할 이벀트 νƒ€μž…μ„ λ¬Έμžμ—΄λ‘œ μ „λ‹¬ν•œλ‹€
μ‹€ν–‰ν•  이벀트 λ¦¬μŠ€λ„ˆ : μ§€μ •λœ μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ μ‹€ν–‰ν•  이벀트 λ¦¬μŠ€λ„ˆλ₯Ό μ „λ‹¬ν•œλ‹€
이벀트 μ „νŒŒ 방식 : falseλ©΄ 버블링(bubbling) λ°©μ‹μœΌλ‘œ, trueλ©΄ 캑처링(capturing) λ°©μ‹μœΌλ‘œ 이벀트λ₯Ό μ „νŒŒν•œλ‹€

🎈 예제

<script>
var showBtn = document.getElementById("btn"); // 아이디가 "btn"인 μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€
showBtn.addEventListener("click", showText);  // μ„ νƒν•œ μš”μ†Œμ— click 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό λ“±λ‘ν•œλ‹€
function showText() {
    document.getElementById("text").innerHTML = "ν…μŠ€νŠΈκ°€ λ‚˜νƒ€λ‚¬λ‹€";
} //λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ ν…μŠ€νŠΈκ°€ λ‚˜νƒ€λ‚œλ‹€.
</script>

β‘‘ attachEvent()

3. μ—¬λŸ¬ 개의 이벀트 λ¦¬μŠ€λ„ˆ 등둝

addEventListener() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•˜λ‚˜μ˜ 객체에 μ—¬λŸ¬ 개의 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό 등둝할 수 μžˆλ‹€

🎈 예제

<script>
var showBtn = document.getElementById("btn"); // 아이디가 "btn"인 μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€
btn.addEventListener("click", clickBtn);  // μ„ νƒν•œ μš”μ†Œμ— click 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό λ“±λ‘ν•œλ‹€
btn.addEventListener("mouseover", mouseoverBtn); // μ„ νƒν•œ μš”μ†Œμ— mouseover 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό λ“±λ‘ν•œλ‹€
btn.addEventListener("mouseout", mouseoutBtn);   // μ„ νƒν•œ μš”μ†Œμ— mouseout 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό λ“±λ‘ν•œλ‹€
function clickBtn() {
    document.getElementById("text").innerHTML = "λ²„νŠΌμ΄ ν΄λ¦­λμ–΄μš”!";
} //λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ λ²„νŠΌμ΄ 클릭됐닀고 λœ¬λ‹€
function mouseoverBtn() {
    document.getElementById("text").innerHTML = "λ²„νŠΌ μœ„μ— λ§ˆμš°μŠ€κ°€ μžˆλ„€μš”!";
} //λ²„νŠΌ μœ„μ— 마우슀λ₯Ό 두면 λ²„νŠΌ μœ„μ— λ§ˆμš°μŠ€κ°€ μžˆλ‹€κ³  λœ¬λ‹€
function mouseoutBtn() {
    document.getElementById("text").innerHTML = "λ²„νŠΌ λ°–μœΌλ‘œ λ§ˆμš°μŠ€κ°€ λ‚˜κ°”μ–΄μš”!";
} //λ²„νŠΌ λ°–μœΌλ‘œ 마우슀λ₯Ό 두면 λ²„νŠΌ λ°–μœΌλ‘œ λ§ˆμš°μŠ€κ°€ λ‚˜κ°”λ‹€κ³  λœ¬λ‹€
</script>

πŸ“— 이벀트 λ¦¬μŠ€λ„ˆ μ‚­μ œ

removeEventListener() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ“±λ‘λœ 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό μ‚­μ œν•  수 μžˆλ‹€

🎈 예제

<script>
function clickBtn() {
    btn.removeEventListener("mouseover", mouseoverBtn);
    btn.removeEventListener("mouseout", mouseoutBtn);
    document.getElementById("text").innerHTML = "이벀트 λ¦¬μŠ€λ„ˆκ°€ μ‚­μ œλ˜μ—ˆμ–΄μš”!";
} //λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ 이벀트 λ¦¬μŠ€λ„ˆκ°€ μ‚­μ œλ˜λ©° μ‚­μ œλ˜μ—ˆλ‹€κ³  λœ¬λ‹€
</script>

πŸ“˜ 이벀트 객체

νŠΉμ • νƒ€μž…μ˜ μ΄λ²€νŠΈμ™€ 관련이 μžˆλŠ” 객체

🎈 예제

<script>
var btn = document.getElementById("btn"); // 아이디가 btn인 μš”μ†Œλ₯Ό 선택함.
btn.addEventListener("click", clickBtn);  // μ„ νƒν•œ μš”μ†Œμ— click 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό 등둝함.
function clickBtn(event) {
    document.getElementById("text").innerHTML =
    "이 이벀트의 νƒ€μž…μ€ " + event.type + "이며, 이벀트의 λŒ€μƒμ€ " + event.target + "μž…λ‹ˆλ‹€.";
} //이 이벀트의 νƒ€μž…μ€ click이며, 이벀트의 λŒ€μƒμ€ [object HTMLButtonElement]μž…λ‹ˆλ‹€.
</script>

βœ” 이벀트 κ°μ²΄λŠ” ν•΄λ‹Ή νƒ€μž…μ˜ μ΄λ²€νŠΈμ— λŒ€ν•œ 상세 정보λ₯Ό μ €μž₯ν•˜κ³  μžˆλ‹€
βœ” λͺ¨λ“  이벀트 κ°μ²΄λŠ” 이벀트의 νƒ€μž…μ„ λ‚˜νƒ€λ‚΄λŠ” type ν”„λ‘œνΌν‹°μ™€ 이벀트의 λŒ€μƒμ„ λ‚˜νƒ€λ‚΄λŠ” target ν”„λ‘œνΌν‹°λ₯Ό 가진닀
βœ” μ΄λ²€νŠΈκ°€ 싀행될 λ•Œ 이벀트 λ¦¬μŠ€λ„ˆμ˜ 인자둜 μ „λ‹¬λœλ‹€

πŸ“” preventDefault()

μ–΄λ–€ 이벀트λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ μ•Šμ€ 경우 ν•΄λ‹Ή μ΄λ²€νŠΈμ— λŒ€ν•œ μ‚¬μš©μž μ—μ΄μ „νŠΈμ˜ κΈ°λ³Έ λ™μž‘μ„ μ‹€ν–‰ν•˜μ§€ μ•Šλ„λ‘ μ§€μ •ν•œλ‹€

🎁 문법

event.preventDefault();
profile
κ°€λΏ‘μ΄μ˜ 곡뢀 μƒμžπŸ“¦

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보