[Js] ์ด๋ฒคํธ | ๋ฑ๋ก๋ฐฉ๋ฒ & inline | ํ๋กํผํฐ ๋ฆฌ์ค๋
- -
๋ชจ๋ ํฌ์คํ ์ ์ธํ๋ฐ [์ํ์ฝ๋ฉ] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "egoing Lee"๋์ ์๋ฃ์ ๋๋ค.
์์ ์ ์ธ ์๋๊ฐ ์๋ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋๋ ๋ชฉ์ ์ผ๋ก ํฌ์คํ ํ ๊ฒ์ ๋๋ค.
์น๋ธ๋ผ์ฐ์ Javascript (์๋ฐ์คํฌ๋ฆฝํธ) - ์ธํ๋ฐ
์ํ์ฝ๋ฉ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ข ์ ๋๋ค. ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ ์ ์ดํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ ํผ๋ฐ์ค๋ฅผ ๊ณต๋ถํด ๋ด ๋๋ค. ์ด๊ธ ์น ๊ฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด JavaScript ์จ๋ผ์ธ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ข
www.inflearn.com
์ด๋ฒคํธ
์ด๋ฒคํธ๋?
์ด๋ฒคํธ(event)๋ ์ด๋ค ์ฌ๊ฑด์ ์๋ฏธํ๋ค. ๋ธ๋ผ์ฐ์ ์์์ ์ฌ๊ฑด์ด๋ ์ฌ์ฉ์๊ฐ ํด๋ฆญ์ ํ์ '๋', ์คํฌ๋กค์ ํ์ '๋', ํ๋์ ๋ด์ฉ์ ๋ฐ๊พธ์์ '๋'์ ๊ฐ์ ๊ฒ์ ์๋ฏธํ๋ค.
<!DOCTYPE html>
<html>
<body>
<input type="button" onclick="alert(window.location)" value="alert(window.href)" />
<input type="button" onclick="window.open('bom.html')" value="window.open('bom.html')" />
</body>
</html>
onclick ์์ฑ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋(alert(window.location))๋ ์ฌ์ฉ์๊ฐ ์ด ๋ฒํผ์ ํด๋ฆญ ํ์ '๋' ์คํ๋๋ค. ์ฆ js ๊ฐ๋ฐ์๋ ์ด๋ค ์ผ์ด ๋ฐ์ํ์ ๋ ์คํ ๋์ด์ผ ํ๋ ์ฝ๋๋ฅผ ๋ฑ๋กํ๊ณ , ๋ธ๋ผ์ฐ์ ๋ ๊ทธ ์ผ์ด ๋ฐ์ํ์ ๋ ๋ฑ๋ก๋ ์ฝ๋๋ฅผ ์คํํ๊ฒ ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ์ด๋ฒคํธ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ํ๋ค.
event target
target์ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ์ฆ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ๋์์ ์๋ฏธํ๋ค.์๋ ์ฝ๋์์ ํ๊ฒ์ ๋ฒํผ ํ๊ทธ์ ๋ํ ๊ฐ์ฒด๊ฐ ๋๋ค.
<input type="button" onclick="alert(window.location)" value="alert(window.href)" />
event type
์ด๋ฒคํธ์ ์ข ๋ฅ๋ฅผ ์๋ฏธํ๋ค. ์์ ์์ ์์๋ click์ด ์ด๋ฒคํธ ํ์ ์ด๋ค. ๊ทธ ์ธ์๋ scroll์ ์ฌ์ฉ์๊ฐ ์คํฌ๋กค์ ์์ง์๋ค๋ ์ด๋ฒคํธ์ด๊ณ , mousemove๋ ๋ง์ฐ์ค๊ฐ ์์ง์์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ด๋ค.
์ด๋ฒคํธ์ ์ข ๋ฅ๋ ์ด๋ฏธ ์ฝ์๋์ด ์๋ค. ์๋ ๋งํฌ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ ์ด๋ฒคํธ์ ์ข ๋ฅ๋ฅผ ๋ณด์ฌ์ค๋ค.
https://developer.mozilla.org/en-US/docs/Web/Reference/Events
Event reference | MDN
DOM Events are sent to notify code of interesting things that have taken place. Each event is represented by an object which is based on the Event interface, and may have additional custom fields and/or functions used to get additional information about wh
developer.mozilla.org
<input type="text" onchange="alert(this.value)" />
์์ ๊ฐ์ ๊ฒฝ์ฐ change ์ฆ ํ ์คํธ ๋ด์ฉ์ด ๋ฐ๋๋ค๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋์ฐ๋ ๊ฒฝ์ฐ change๊ฐ ๋ฐ๋ก ์ด๋ฒคํธ ํ์ ์ธ ๊ฒ์ด๋ค.
event handler
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋์ํ๋ ์ฝ๋๋ฅผ ์๋ฏธํ๋ค. ์์ ์์ ์์๋ alert(window.location) ๊ฒฝ๊ณ ์ฐฝ์ ์๋ฏธํ๋ค.
์ด๋ฒคํธ ํ์ ์ ๋ค์ด๊ฐ๋ ์์ฑ์ด ๋ฐ๋ก ํธ๋ค๋ฌ ์ธ ๊ฒ์ด๋ค.
inline
์ธ๋ผ์ธ(inline) ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ์ธ๋ผ์ธ ๋ฐฉ์์ ์ด๋ฒคํธ๋ฅผ ์ด๋ฒคํธ ๋์์ ํ๊ทธ ์์ฑ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ด๋ค.
์์์ ์์๋ณด์๋ ๋ฐฉ์๋ค์ด inline ๋ฐฉ์์ด๋ค. ํ๊ทธ์์ ์ด๋ฒคํธ๊ฐ ์์ฑ์ผ๋ก ์ง์ ๋ค์ด๊ฐ ์์ ๋ ์ด๊ฒ์ inline์ด๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค.
๋ค์์ ๋ฒํผ์ ํด๋ฆญํ์ ๋ Hello world๋ฅผ ๊ฒฝ๊ณ ์ฐฝ์ผ๋ก ์ถ๋ ฅํ๋ค.
<input type="button" onclick="alert('Hello world');" value="button" />
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋์์ ํ์๋กํ๋ ๊ฒฝ์ฐ this๋ฅผ ํตํด์ ์ฐธ์กฐํ ์ ์๋ค. (this๋ฅผ ์๊ธฐ ์์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.)
์ด๋ฒคํธ๊ฐ ๋์ํ๊ณ ์๋ input ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ๋ฅดํค๋ฏ๋ก ๊ฒฐ๊ตญ ๊ฐ์ ์ฝ๋๊ฐ ๋๋ค.
<!--์๊ธฐ ์์ ์ ์ฐธ์กฐํ๋ ๋ถํธํ ๋ฐฉ๋ฒ-->
<input type="button" id="target" onclick="alert('Hello world, '+document.getElementById('target').value);" value="button" />
<!--this๋ฅผ ํตํด์ ๊ฐํธํ๊ฒ ์ฐธ์กฐํ ์ ์๋ค-->
<input type="button" onclick="alert('Hello world, '+this.value);" value="button" />
this๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ ์์ ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๊ฐ๋ฅผ ์จ๋ ์๊ด์ด ์์ง๋ง ์์ ์๊ธฐ ์์ ์ ์ฐธ์กฐํ๋ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ target์ ๊ฐ๋ฅดํค๋ getElementById๋ ํ๋์ ๊ฐ๋ง ๋ฐ์ ์ฌ ์ ์์ผ๋ฏ๋ก ์๋ฌ๊ฐ ๋๋ค.
์ธ๋ผ์ธ ๋ฐฉ์์ ํ๊ทธ์ ์ด๋ฒคํธ๊ฐ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฒคํธ์ ์์ฌ๋ฅผ ํ์ ํ๋ ๊ฒ์ด ํธ๋ฆฌํ๋ค. ํ์ง๋ง ์ ๋ณด์ธ HTML๊ณผ ์ ์ด์ธ JavaScript๊ฐ ํผ์ฌ๋ ํํ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์งํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์๋ ์๋ค.
ํ๋กํผํฐ ๋ฆฌ์ค๋
ํ๋กํผํฐ ๋ฆฌ์ค๋ ๋ฐฉ์์ ์ด๋ฒคํธ ๋์์ ํด๋นํ๋ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ์์ด๋ค.
์ธ๋ผ์ธ ๋ฐฉ์์ ๋นํด์ HTML๊ณผ JavaScript๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค๋ ์ ์์ ์ ํธ๋๋ ๋ฐฉ์์ด์ง๋ง ๋ค์์ ๋ฐฐ์ธ addEventListener ๋ฐฉ์์ ์ถ์ฒํ๋ค.
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.onclick = function(){
alert('Hello world');
}
</script>
์์ ๊ฐ์ด ๊ฐ์ฒด๋ก ์ ์ํ์ฌ ์ด๋ฒคํธ๋ฅผ ๋์ ์ํฌ ์ ์๋ค.
์ด๋ฒคํธ ๊ฐ์ฒด
์ด๋ฒคํธ๊ฐ ์คํ๋ ๋งฅ๋ฝ์ ์ ๋ณด๊ฐ ํ์ํ ๋๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ฒคํธ ๊ฐ์ฒด๋ ์ด๋ฒคํธ๊ฐ ์คํ๋ ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ธ์๋ก ์ ๋ฌ๋๋ค.
<body>
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.onclick = function(event){
alert('Hello world, '+event.target.value)
}
</script>
์๋ ์ฝ๋๋ ์ด๋ฒคํธ ๊ฐ์ฒด์์ ๋ค์ด์๋ ๊ฐ์ ํ์ธ ํ ์๊ฐ ์๋ค. ์ด๋ฒคํธ๊ฐ ์คํ ๋ ์์ ์์์ ์ ๋ณด๋ค์ด ๋ด๊ฒจ์๋ค.
<body>
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.onclick = function(event){
console.dir(event);
}
</script>
ie8 ์ดํ ๋ฒ์ ์์๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ํธ๋ค๋ฌ์ ์ธ์๊ฐ ์๋๋ผ ์ ์ญ๊ฐ์ฒด์ event ํ๋กํผํฐ๋ก ์ ๊ณตํ๋ค. ๋ํ target ํ๋กํผํฐ๋ ์ง์ํ์ง ์๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๊ฐ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์ ์ด๊ณ , ์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ์ง์์ด ์๋๊ธฐ ๋๋ฌธ์ window๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์๋๋ ์ด ๋ฌธ์ ๋ฅผ ํด์ํ๊ธฐ ์ํ ์ฝ๋๋ค.
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.onclick = function(event){
var event = event || window.event; // ์ฌ๊ธฐ์ ||๋ ์์ ๊ฐ์ด ์๋ค๋ฉด ๋ค์ ๊ฐ์ ์ฐ๊ฒ ๋ค๋ ์๋ฏธ์.
var target = event.target || event.srcElement;//์ฌ๊ธฐ์๋ srcElement๊ฐ ๊ทธ ์ญํ ์ ํจ.
alert('Hello world, '+target.value)
}
</script>
์ฆ ์์ ์ฝ๋์ ์๋ค๋ฉด ๋ค์ ์๋ ์ด์ ๋ฒ์ ์์๋ ์ง์๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐๐ป[Js] ๊ธฐ๋ณธ๋์์ ์ทจ์ | ํผ | ๋ฌธ์๋ก๋ฉ (0) | 2021.02.10 |
---|---|
๐๐ป[Js] addEventListener() | ์ด๋ฒคํธ ์ ํ | ๋ฒ๋ธ๋ง๊ณผ ์บก์ฒ๋ง (0) | 2021.02.10 |
๐๐ป[Js] ๋ฌธ์์ ๊ธฐํํ์ ํน์ฑ (0) | 2021.02.10 |
[Js] Text๊ฐ์ฒด | ๊ฐ API | ์กฐ์ API (0) | 2021.02.10 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค