1. Event Handler ํ ๋นํ๊ธฐ
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<button onclick = "alert('ํด๋ฆญํ์ต๋๋ค')"> ํด๋ฆญ </button>
</body>
DOM Events
: Event์ ์์ฑ๋ค์ด ์๋ค. ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ์ดํด๋ณด๋ฉด ์ข๋ค.
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<button onclick="alert('ํด๋ฆญํ์ต๋๋ค')">ํด๋ฆญ</button>
<button onclick="sayHello()">ํด๋ฆญ2</button>
<button id="btn">ํด๋ฆญ3</button>
<button id="btn2">ํด๋ฆญ4</button>
<script>
function sayHello() {
alert("Hello"); //๊ดํธ๊ฐ ์์ด์ผํ๋ค. ๊ดํธ๊ฐ ์์ผ๋ฉด ํจ์์ ๋ฐํ๊ฐ์ด ํ ๋น๋๊ธฐ ๋๋ฌธ.
}
const el = document.getElementById("btn");
el.onclick = sayHello
const el2 = document.getElementById("btn2");
el2.addEventListener("click", sayHello); //addEventListener: ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ค๋ฌ(์ ๋ฌ๋ ํจ์)๋ฅผ ์คํํ๋ค.
</script>
</body>
</html>
์์ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
ํด๋ฆญ, ํด๋ฆญ2, ํด๋ฆญ3, ํด๋ฆญ4๋ฅผ ๋ณด๋ฉด ๊ฐ์ ๋ค๋ฅธ ๋ฐฉ์์ button event ์ฝ๋๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
addEventListener
- :ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ค๋ฌ(์ ๋ฌ๋ ํจ์)๋ฅผ ์คํํ๋ค.
- Handler๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค
el2.addEventListener("click", sayHello);
sayHello ์๋ฆฌ์ ์ง์ ์ ๋ฌํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
el2.addEventListener("click", () => {
alert("hi");
});
๊ฒฐ๊ณผ
+ removeEventListener
: ์ด๋ฏธ ํ ๋น๋ ์ด๋ฒคํธ๋ฅผ ์ง์ธ ๋ ์ฌ์ฉํ๋ค.
focus์ blur
- focus: ์ ๋ ฅ์ฐฝ์ ๋ง์ฐ์ค๋ฅผ ๋๋ ์ ๋ ๋ฐ์
- blur: focus ์์ ๋
โ๏ธ์ ๋ ฅ
input.addEventListener("focus", () => {
input.style.backgroundColor = "rgba(255,-0,0,0.2)";
});
input.addEventListener("blur", () => {
input.style.backgroundColor = null; // null: ์ด๊ธฐํ์ํจ๋ค
});
๐๊ฒฐ๊ณผ
- ์ ๋ ฅ์ฐฝ ํด๋ฆญ์ ์ค์ ํ rgb๊ฐ์ ์์ด ๋ณด์ฌ์ง๊ณ , ํฌ์ฟ ์ค๋ฅผ ๋ผ๋ฉด ์ด๊ธฐํ์ํจ๋ค.
mousemove
- ๋ง์ฐ์ค๋ฅผ ์์ง์์๋๋ง๋ค ์ด๋ฒคํธ ๋ฐ์
โ๏ธ์ ๋ ฅ
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<div
id="box"
style="width: 100px; height: 100px; border: 2px solod red"
></div>
<script>
const box = document.getElementById("box");
box.addEventListener("mousemove", event => {
console.log(event);
});
</script>
</body>
</html>
๐๊ฒฐ๊ณผ
: ์ด ๋ค๋ชจ๋ฐ์ค ์์์ ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋๋ง๋ค console์์ ๋ง์ฐ์ค์ ์์น๊ฐ์ด ๊ณ์ ๋จ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
: ์ ์๋ณด์ด๊ฒ ์ง๋ง..
clientX: 54
clientY: 111 ์ด๋ผ๊ณ ์ ํ์๋ค.
์ด๊ฒ์ ํตํด ํ์ฌ ๋ง์ฐ์ค ํฌ์ธํฐ์ ์์น๋ฅผ ์ ์ ์๋ค.
โจ์ฌํ) ์ปค์๋ฅผ ๋ฐ๋ผ๋ค๋๋ ๋๊ทธ๋ผ๋ฏธ ๋ง๋๋ ๋ฐฉ๋ฒ
โ๏ธ์ ๋ ฅ
- ์ฒ์ฒํ ๋ฐ๋ผํ๋ฉด์ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<div
id="box"
style="
position: relative;
width: 100px;
height: 100px;
border: 2px solid red
"
>
<div
id="circle"
style="
position: absolute;
width: 10px;
height: 10px;
background-color: #000;
border-radius: 50%;
"
></div>
<script>
const box = document.getElementById("box");
box.addEventListener("mousemove", event => {
circle.style.top = `${event.clientY}px`;
circle.style.left = `${event.clientX}px`;
});
</script>
</body>
</html>
</script>
</body>
</html>
๐๊ฒฐ๊ณผ
- ์ปค์๊ฐ ๋ค๋ชจ ๋ฐ์ค ์์ ์์๋ ๋ง์ฐ์ค์ค๋ฒ์, ๊ฒ์ ์ ์์ด ์ปค์๋ฅผ ๋ฐ๋ผ๋ค๋๋ค.
- ๋ง์ฐ์ค๊ฐ ์์ง์ผ๋๋ง๋ค ์์ top๊ณผ left์ ๊ฐ์ด ๋ฐ๋๋ค.
resize
- ์ฐฝ ํฌ๊ธฐ๊ฐ ๋ฐ๋๋๋ง๋ค, ๋์ด์ ๋์ด๊ฐ์ด ๋ฌ๋ผ์ง๋ค.
โ๏ธ์ ๋ ฅ
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<script>
window.addEventListener("resize", () => {
document.body.innerText = `ํ์ฌ ์ฐฝ ํฌ๊ธฐ๋ ${window.
innerWidth} x ${window.innerHeight}`;
});
</script>
</body>
</html>
</script>
</body>
</html>
๐๊ฒฐ๊ณผ
์ด๋ฒคํธ type์ ์๋นํ ๋ง๋ค.
๊ด๋ จ๋ type๋ค์ ์ฌ์ฉํด๋ณด๋ฉด์ ์ด๋ค ๊ธฐ๋ฅ์ธ์ง ์ฐ์ต์ ํด๋ณด๊ธฐ๋ฅผ ๊ถํ๋ค.
์์ฃผ ์ฐ๋ EVENT type | |
click | ํด๋ฆญ ์ ์ด๋ฒคํธ ๋ฐ์. |
dblclick | ๋๋ธํด๋ฆญ ์ ์ด๋ฒคํธ ๋ฐ์. |
keydown | ํค๋ณด๋๋ฅผ ๋์ ๋ ์ด๋ฒคํธ ๋ฐ์ |
keyup | ํค๋ณด๋๋ฅผ ์ ๋ ฅํ์ ๋ ์ด๋ฒคํธ ๋ฐ์ |
focus // inputํ๊ทธ์์ฑ | ์ ๋ ฅ์ฐฝ์ ๋ง์ฐ์ค๋ฅผ ๋๋ ์ ๋ ๋ฐ์ |
focusin // inputํ๊ทธ์์ฑ | |
blur // inputํ๊ทธ์์ฑ | focus๋ฅผ ์์ ๋ ์ด๋ฒคํธ ๋ฐ์ |
focusout/ / inputํ๊ทธ์์ฑ | |
mousemove | ๋ง์ฐ์ค๋ฅผ ์์ง์ผ๋๋ง๋ค ์ด๋ฒคํธ ๋ฐ์ |
resize | ์ฐฝ ํฌ๊ธฐ๊ฐ ๋ฐ๋ ๋๋ง๋ค, ๋๋น์ ๋์ด๊ฐ์ ์ ๋ฐ์ดํธ ํด์ค๋ค |
'๐Development > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] DOM & EVENT #6 ์ด๋ฒคํธ ๋ฒ๋ธ๋ง, ์ด๋ฒคํธ ์์ (0) | 2023.03.27 |
---|---|
[JS] DOM์ด๋? #4 CSS style, class ์ ์ด (0) | 2023.03.26 |
[JS] DOM์ด๋? #3 ๋ ธ๋ ์์ฑ,์ถ๊ฐ,๋ณต์ ,์ญ์ (0) | 2023.03.26 |
[JS] DOM์ด๋? #2 ๋ถ๋ชจ, ์์, ํ์ Node (0) | 2023.03.26 |
[JS] DOM์ด๋? #1 Node์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ (0) | 2023.03.26 |