๐๋ฐ๋ค๋ฐ๋ค๐ ํ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ณด์๋ค. ์ ... ๋ฐ๋ค๊ฐ๊ณ ์ถ๊ณ ๋จผ๐ณ๐ ๐ ๊ทธ๋๋ ๋ฐฉ์์ ์ด๊ฑฐ CSS๋ก ๋์์ธ ์
ํ๋ฉด์ ํ๋งํ๋ค. ์ฌ๋ฐ์๋ค.
yes! ๐
document.querySelector()
oncilck
: ํด๋ฆญํ์ ๋
onkeyup
: ํค๋ฅผ ๋๋ฅด๊ณ ๋ผ์์ ๋
addEventListener(type, ํจ์)
: ์ฌ๋ฌ ํ์ ์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ํจ์๋ฅผ ์คํ์ํฌ ์ ์๋ค.
์๋๋ class="register"์ธ ๋ฒํผ์ ์ฐพ๊ณ ๋๋ ์ ๋(mousedown) class="click"์ ์ถ๊ฐํด ์ฃผ๋ ํจ์์ด๋ค.let btnRegister = document.querySelector('.register') btnRegister.onmousedown = function () { // ์ด๋ฐ ์์ผ๋ก ์ฐ๊ฑฐ๋ btnRegister.classList.add('click') btnRegister.addEventListener('mousedown', function(event) { // ์ด๋ ๊ฒ ์ธ ์ ์๋ค. btnRegister.classList.add('click') })
onclick
์ ์ฌ๋ฌ๊ฐ ๊ฑธ๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ๊ฒ ์คํ์ด ๋๋ฏ๋ก ๋ค์ค์ผ๋ก ์ค ๋๋addEventListener
๋ฅผ ์ฌ์ฉํ์! ์ด์ ๊ด๋ จํ ๋ฒ๋ธ๋ง๊ณผevent.stopPropagation()
์ ๋ํ ์๋ฃ๋ ์๋๋ฅผ ์ฐธ๊ณ ํ์.
๋ฒ๋ธ๋ง๊ณผ ์บก์ฒ๋ง : https://ko.javascript.info/bubbling-and-capturing
event.target
: ํ ์คํธ์ ํ๊ทธ ์ ๋ณด๋ฅผ ์ ์ ์๋ค.console.log(event); // PointerEvent ๊ฐ์ฒด : PointerEvent { ... } console.log(event.target); // tag + textContent : <button>์๋ฉ๋ฆฌ์นด๋ ธ</button> console.log(event.target.textContent); // textContent : ์๋ฉ๋ฆฌ์นด๋ ธ
yes! ๐
๊ฐ๋จํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ ์ ์๋ ํ์ด์ง๋ฅผ ๋ง๋ค์๋ค!
element.style.display = 'none';
์ผ๋ก JavaScript์์ ์ธ ์ ์์ง๋ง ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ก CSS ์์.hide {display: none}
๋ฅผ ๋ง๋ค์ด ์ฃผ๊ณ ,
JavaScript์์element.classList.remove('hide')
๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ๊ฒ ์ข๋ค.
์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค! ๐
https://velog.io/@developerjhp/๋ง์ด-์ฐ์ด๋-Regex-์์ ๋ค
event๋ ์ฌ์ฉ์์ ํฐ์น๋ ํด๋ฆญ๊ฐ์ ์ฌ์ฉ์์ ์ก์ ์ด๋ API๊ฐ ์์ฑํ ์ ์๋ค. ์ค๋ ๋ฐฐ์ด event๋
onclick
onkeyup
onscroll
onmousedown
๋ฑ์ด ์๋ค.element.onkeyup = function () { console.log(element.value) // ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ๋๋ ๋ค ๋์ ๋, element์ textContent๊ฐ์ ์ฝ์๋ก ๋ณผ ์ ์๋ค. }
์ด๋ ๊ฒ ์ด๋ฒคํธ ํจ์๋ฅผ ํธ๋ค๋ฌ๋ก ์๋ฆฌ๋จผํธ์ ์ ์ฉ์ํฌ ์ ์๋ค.
์์์ ์ผ๋ฏ์ด
onclick
์ ์ฌ๋ฌ๊ฐ ๊ฑธ๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ๊ฒ ์คํ์ด ๋๋ฏ๋ก ๋ค์ค์ผ๋ก ์ค ๋๋addEventListener
๋ฅผ ์ฌ์ฉํ์!addEventListner
๋ overwriting์ด ๊ฐ๋ฅํ๋ค. onclick์ ๋ถ๊ฐํ๊ณ ! ์๋ฅผ ๋ค๋ฉด,test.onclick ~ console.log(1) ~ test.onclick ~ console.log(2) ~
์ด ์๋ค๋ฉด , 1์ ์ฝ์๋ก๊ทธ์ ์ฐํ์ง ์๊ณ 2๋ง ์ฐํ๊ฒ ๋๋ค.
yes! ๐
ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ค์ํ ์ ์ ํจ์ ๊ทธ ์์ฒด๋ก ๋ฑ๋กํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์์์ ํจ์ makeFunction์ ์ด๋ฒคํธ์ ์ฐ๊ฒฐํด ๋ณด์.element.onclick = makeFunction(); // X element.onclick = makeFunction; // O
์์์๋ ์๋์ ํ์ง ์๊ณ ์๋์ ์ฝ๋์์ ์๋ํ๋ค. ์ค์ํ๊ธฐ ์ฌ์ด ๋ถ๋ถ์ด๋ ์ ์๊ณ ๊ฐ์!
ํ์ฌ ์ฐฝ์์ ํผ์ ์ ์ถํ๋ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ด๋ค.
<input type="submit" ~/>
์ด๋ฌ๋ฉด ๋ฒํผ์ฒ๋ผ ๋ฒํผ์ด ํ๋ ์๊ธฐ๋๋ฐ, ์ฌ์ฉ์๊ฐ ์ด ๋ฒํผ์ ๋๋ ์ ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
onchange : ๊ฐ์ ๋ณํ๊ฐ ์์ ๋ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค.
onkeyup : ํค๋ฅผ ๋๋ฌ์ ๊ฐ์ด ๋ณํ ๋ค์ ๋ผ์์ ๋
๋ง์ฐ์ค ํฌ์ธํฐ๊ฐ ์์(์์์ ํฌํจํ์ฌ)์ ์์ผ๋ก ๋ค์ด์ฌ ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
onmouseover์ ๋ฐ๋ ๊ฐ๋ ์ผ๋ก, ๋ง์ฐ์ค ํฌ์ธํฐ๊ฐ ์์ ๋ฐ(์์์ ํฌํจํ์ฌ)์ผ๋ก ๋๊ฐ ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
ํ์ฌ ์ด๋ฒคํธ์ ๊ธฐ๋ณธ ๋์์ ์ค๋จํ๋ค. ์๋ฅผ ๋ค์ด, ์ ์ถ๋ฒํผ์ ๋๋ฅธ ํ์ ๋ฒํผ ๋์์ ๋ง๊ฑฐ๋ ํ ๋ ์ธ ์ ์๋ค.
์๋ฐฐ๋ํ์ดํ ๐ฅ