-
์๋ฐ์คํฌ๋ฆฝํธ form ๊ฐ์ฒด, ์ด๋ฒคํธ ํธ๋ค๋งJavaScript 2020. 9. 10. 21:29
๐ฏ ์๋ฐ์คํฌ๋ฆฝํธ ํผ ๊ฐ์ฒด, ์ด๋ฒคํธ ํธ๋ค๋ง, ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์์์๋ณธ๋ค.
Form ๊ฐ์ฒด
ํผ์ ํด๋ผ์ด์ธํธ์์ ์๋ฒ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ญํ ์ ๋ด๋นํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ HTMLํผ์ form๊ฐ์ฒด๊ฐ ์ํธ์์ฉํ ์ ์๋๋ก ์ง์๋๋ฉฐ document ๊ฐ์ฒด์ ์์ฑ์ผ๋ก ์ค์ ๋๋ค. ์ ๊ทผ์
document.forms[]
๋ฐฐ์ด์ ํตํด ์ ๊ทผํ ์ ์๋ค.ํผ ์ด๋ฒคํธ ํธ๋ค๋ฌ
onSubmit() : ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ
onReset() : ๋ฆฌ์ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ
action๊ณผ onSubmit
<body> <form action="target.html" id="test" onsubmit="test()"> <button>์ ์ก</button> </form> <script> function test(e) { console.log("ํธ์ถ๋จ"); } </script> </body>
๋ฒํผ์ด ํผ ํ๊ทธ ๋ด์ ์์นํ๊ณ ์๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ ์ก ๋ฒํผ์ ๋๋ฅด๋ฉด ํผ ํ๊ทธ์ onsubmit ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ test() ํจ์๋ฅผ ํธ์ถํ๋ค. ํผ ํ๊ทธ์ ์ก์ ์ ๋ฒํผ์ ๋๋ ์ ๋ ์ทจํ ํ๋์ ์๋ฏธํ๋ค. ์ก์ ์์ฑ์ผ๋ก ์ธํด test ํจ์์ ์ฝ์์ ๋ณผ ์๋ ์์ด ๋ฐ๋ก ํ๊ฒํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ event ๊ฐ์ฒด์ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋ด๋๋ค. ์ฝ๋๋ฅผ ๋ณด๋ฉด test ํจ์ ํ๋ผ๋ฏธํฐ์ ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ e๋ผ๋ ๋ณ์๋ก ๋ฐ๊ณ ์๋ค. ๋ณ์์ด๋ฆ์ ์์ ๋กญ๊ฒ ์ง์ ํ ์ ์์ผ๋ฉฐ ์ด ์ด๋ฒคํธ๊ฐ์ฒด ๋ณ์๋ ์๋ต ๊ฐ๋ฅํ๋ค.
๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋์ ๊ธ์งํ๊ธฐ
event.preventDefault();
์ด๋ฒคํธ ๊ฐ์ฒด์ preventDefault() ํจ์๋ submit ์ด๋ฒคํธ๋ฅผ ๋ฌด์ํ๋ ๋์์ ํ๋ค. ์ด ์ฝ๋๋ฅผ testํจ์ ์์ ์์ฑํ๋ฉด ํผ์ ๋์์ ๋ง์์ ๋ฒํผ์ ํด๋ฆญํด๋ ์ก์ ์ ์ทจํ์ง ์๋๋ค.ํจ์๋ก ํผ action ์ง์ ํ๊ธฐ
<body> <form id="test" onsubmit="test()"> <button>์ ์ก</button> </form> <script> function test(e) { console.log("ํธ์ถ๋จ"); var myForm = document.getElementById("test"); myForm.action="target.html"; } </script>
ํผ ํ๊ทธ์ ์ก์ ์ ์ง์ ์ ์ ์ด๋ onSubmit ์์ฑ์ผ๋ก ํธ์ถํ๋ ํธ๋ค๋ฌ ํจ์ ์์ ์ก์ ์ ์ง์ ํ ์ ์๋ค.
ํผ ์ปจํธ๋กค์ ์ข ๋ฅ
๋ชจ๋ ํผ ์ปจํธ๋กค์ ํด๋นํ๋ ๊ฐ์ฒด๊ฐ ์ ๊ณต๋๋ค. ๋ฐ๋ผ์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฒคํธ ํธ๋ค๋ง
์ด๋ฒคํธ๋ ๋ฌด์จ ์ฌ๊ฑด์ด ์ผ์ด๋ฌ๋ค๋ ์ ํธ๋ค. ์นํ์ด์ง ์์์ ๋ฐ์ํ ์ฌ๋ฌ๊ฐ์ง ์ฌ๊ฑด(์ด๋ฒคํธ)์ ๋์ํด ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ํจ์๋ฅผ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ผ๊ณ ํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ ํค๋ณด๋๋ฅผ ์ ๋ ฅํ๋ ๋ฑ์ ์ด๋ฒคํธ ๋ฐ์์ํฌ ์ ์๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ค์ค๋ก ํ์ด์ง๋ฅผ ๋ก๋ํ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํฌ ์๋ ์๋ค.
์ฃผ์ ์ด๋ฒคํธ ํ์
์ฃผ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ
์ฃผ์ ์ด๋ฒคํธ ์ด๋ฆ์ on์ ๋ถ์ด๋ฉด HTML ํ๊ทธ ์์์ ์ด๋ฒคํธ ์์ฑ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. html์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ์ง ์์์ onclick์ฒ๋ผ ์๋ฌธ์๋ก ์์ฑํด๋ ๋๋ค. ์ด์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ด๋ฒคํธ ์์ฑ ์์ ํธ๋ค๋ฌ๋ฅผ ํ ๋นํด์ผ ํ๋ค.
html ํ๊ทธ ๋ด ์ด๋ฒคํธ ์์ฑ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํ ๋นํ ๋, ๊ฐ๋จํ alert() ํจ์๋ผ๋ฉด html์ ๋ฐ๋ก ์์ฑํ๋ฉด ๋์ง๋ง, ์ฝ๋๊ฐ ๊ธธ๋ค๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์ ํจ์๋ฅผ ๋ง๋ค์ด์ ํธ์ถํ๋ ๊ฒ์ด ์ข๋ค.
์ด๋ฒคํธ ์ฒ๋ฆฌ ์์
๋ธ๋ผ์ฐ์ ์ DOM ์์๋ค์ ๋ค ๋ก๋ฉํ ๋ค์์ ์ด๋ฒคํธ๋ฅผ ์คํํด์ผ ํ๋ค. ๋ฐ๋ผ์ ์์ฑํ ์คํฌ๋ฆฝํธ์ DOM level 0 ๋ชจ๋ธ์ ์ฌ์ฉํ๊ฑฐ๋ <script> ํ๊ทธ๋ฅผ </body> ์๋ฉํ๊ทธ ์์ ์์น์์ผ์ผ ํ๋ค.
์ด๋ฒคํธ ๋ชจ๋ธ
์ด๋ฒคํธ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ธ ์ด๋ฒคํธ ๋ชจ๋ธ์ DOM ๋ ๋ฒจ์ ๋ฐ๋ผ ๋ ์ข ๋ฅ๋ก ๋๋๋ค.
DOM Level 0 : ์ธ๋ผ์ธ ์ด๋ฒคํธ ๋ชจ๋ธ, ๊ณ ์ ์ด๋ฒคํธ ๋ชจ๋ธ
๋ ๋ฒจ0์์ ์ ๊ณตํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ด๋ฆ์ ์ฃผ์ ์ด๋ฒคํธ๋ช ์์ on์ ๋์ฌ๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉ๋๋ค. (onload, onclick ๋ฑ)
๊ฐ ์์์ ์ด๋ฒคํธ ํ์ ๋ณ๋ก ํ๋์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ง ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ ํธ๋ค๋ฌ ๋ด์์ ์ด๋ฒคํธ ๋ฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด this๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์ธ๋ผ์ธ ์ด๋ฒคํธ ๋ชจ๋ธ
<body onload="init()"> <button onclick="xxx()" onmouseover="yyy()" onmouseout="zzz()">ํด๋ฆญ</button> <input type="text" name="userid" onkeyup="kkk(this.value)"> <button onclick="xyz(event)">์ด๋ฒคํธ ์ ๋ณด</button> </body>
<script type="text/javascript"> //์ธ๋ผ์ธ ๋ฐฉ์ function init() { console.log("๋ชจ๋ html์ด ๋ชจ๋ DOM์ผ๋ก ์์ฑ๋ํ ์คํ"); } function xxx() { console.log("xxx() ํธ์ถ"); } function yyy() { console.log("onmouseover"); } function zzz() { console.log("onmouseout"); } function kkk(v) { console.log("ํค๋ณด๋๊ฐ up", v); } function xyz(e) { console.log(e, e.screenX, e.screenY); } </script>
์ธ๋ผ์ธ ์ด๋ฒคํธ ๋ชจ๋ธ์ HTML ์์ฑ์ ํ์ฉํ ๋ฐฉ์์ด๋ค.
๊ณ ์ ์ด๋ฒคํธ ๋ชจ๋ธ
window.onload
๋ฅผ ์ฌ์ฉํด์ ํ์ด์ง๋ฅผ ๋ค ๋ก๋ฉํ ํ ํจ์๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ๋ฃ์ด์ค๋ค.<body> <button id="xxx">ํด๋ฆญ</button> <input type="text" name="userid" id="userid"> <button id="xyz">์ด๋ฒคํธ ์ ๋ณด</button> </body>
<script type="text/javascript"> window.onload = init; // window.onload = init();์ ์๋จ function init() { console.log("๋ชจ๋ html์ด ๋ชจ๋ DOM์ผ๋ก ์์ฑ๋ํ ์คํ"); document.getElementById("xxx").onclick = function () { console.log("clicked"); }; document.getElementById("xxx").onmouseover = function () { console.log("onmouseover"); }; document.getElementById("xxx").onmouseout = function () { console.log("onmouseout"); }; document.getElementById("userid").onkeyup = function () { console.log(this.value); } document.getElementById("xyz").onclick = function () { console.log(event.screenX, event.screenY); }; } </script>
DOM Level 0 ์ฐ์ตํ๊ธฐ
onchange
<script type="text/javascript"> function xxx() { var f= document.getElementById("fruits"); console.log(f.value); } </script> </head> <body> <select id="fruits" onchange="xxx()"> <option value="์ฌ๊ณผ">์ฌ๊ณผ</option> <option value="๋ฐ๋๋">๋ฐ๋๋</option> <option value="์๋ฐ">์๋ฐ</option> <option value="ํฌ๋">ํฌ๋</option> </select>
ํ๊ทธ์ ์์ด๋๋ฅผ ์ ๋ ํด์ ์ด๋ค ์ต์ ์ด ์ ํ๋์๋์ง ๋ฐธ๋ฅ๊ฐ์ ์ฝ์์ ์ถ๋ ฅํ๋ค. onchange๋ ๋ณํ๊ฐ ์๊ฒผ์ ๋ ์๋ํ๋ ์ด๋ฒคํธ์ด๋ค. ์ ๋ ํธ ๋ฐ์ค์์ ์ฃผ๋ก ์ฐ์ด๋ ์ด๋ฒคํธ๋ค.
<body> ๊ฐ๊ฒฉ<input type="text" name="price" id="price"><br> ์๋ <select id="quantity" name="quantity" onchange="sum()"> <option value="10">10</option> <option value="20">20</option> <option value="30">30</option> <option value="40">40</option> </select> <br> ์ด๊ฐ๊ฒฉ<input type="text" name="totalPrice" id="totalPrice"> <script type="text/javascript"> function sum() { var price = document.getElementById("price").value; var quantity = document.getElementById("quantity").value; document.getElementById("totalPrice").value = parseInt(price)*parseInt(quantity) } </script>
onchange ์ด๋ฒคํธ๋ก ์ธํด ๋ฐ๋ก ๋ฒํผ์ด ์์ด๋ ํจ์๋ฅผ ํธ์ถํ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค. ๊ฐ๊ฒฉ๊ณผ ์๋์ ๋ฐธ๋ฅ๊ฐ์ ๋ณ์์ ์ ์ฅํด์ ์ดํฉ์ ๊ตฌํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ง๋ ๋ค. ์ดํฉ๊ณ ์ธํ์ ๋ฐธ๋ฅ์๋ ๊ฐ๊ฒฉ๊ณผ ์๋์ ๊ณฑํ ๊ฐ์ ์ ๋ ฅํ๋ค.
this์ฌ์ฉ
<select id="quantity" onchange="sum(this)"> function sum(s) { var quantity = s.value;
ํธ๋ค๋ฌ์ this๋ ํธ๋ค๋ฌ๊ฐ ํ ๋น๋ ํ๊ทธ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ฌ๊ธฐ์ this๋ select ํ๊ทธ์ด๋ค. ์ ๋ ํธ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ด์์ sum ํจ์๋ฅผ ํธ์ถํ๊ณ quantity ๋ณ์์ ๋ฐ์์จ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐธ๋ฅ๊ฐ์ ๋ฃ๋๋ค.
this.value ์ฌ์ฉ
<select id="quantity" onchange="sum(this.value)"> function sum(s) { var quantity = s;
value๊ฐ๊น์ง ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ๋ฐ์ผ๋ฉด ๋ณ์ ์ฌ์ฉ์ด ๋ ๊ฐ๋จํด์ง๋ค.
onkeyup
์์๋ฆฌ ์ธํ๊ฐ์ ์ฌ์ฏ์๋ฆฌ๊ฐ ์ฑ์์ง๋ฉด ๋ฐ๋ก ๋ท์๋ฆฌ๋ก ํฌ์ปค์ค๋ฅผ ์ด๋์ํจ๋ค.
<body> ์ฃผ๋ฏผ๋ฒํธ<input type="text" id="ssn1" name="ssn1" onkeyup="xxx()">- <input type="text" id="ssn2" name="ssn2"> </body>
<script type="text/javascript"> function xxx() { var ssn1 = document.getElementById("ssn1").value; if(ssn1.length==6){ document.getElementById("ssn2").focus(); } document.getElementById("result").innerText=ssn1; } </script>
์ฒซ๋ฒ์งธ ์ธํ์ onkeyup ์ด๋ฒคํธ๋ก ํจ์๋ฅผ ํธ์ถํ๋ค. ํด๋น ํจ์๋ ์ฒซ๋ฒ์งธ ์ธํ์ ๋ฐธ๋ฅ๊ฐ์ ๊ฐ์ ธ์์ 6์๋ฆฌ์ธ์ง ๊ฒ์ฌํ๊ณ 6์๋ฆฌ๋ผ๋ฉด ์ปค์์ ํฌ์ปค์ค๋ฅผ ๋ค์ ์ธํ์ผ๋ก ์ฎ๊ธด๋ค.
focus() : ์ ํ๋ ์์์ ํฌ์ปค์ค๋ฅผ ๋ถ์ฌํ๋ค. ํ ์คํธ ์ฐฝ์ผ ๊ฒฝ์ฐ ์ปค์๋ฅผ ์์น์ํค๊ณ ๋ฒํผ์ผ ๊ฒฝ์ฐ ์ํฐ๋ฅผ ์ฌ์ฉํด ํด๋ฆญํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
*getElementsByName
<body> ์ข์ํ๋ ๊ณผ์ผ ์ ํํ๊ธฐ<br> ์ฌ๊ณผ<input type="checkbox" name="fruits" value="apple"><br> ์ค๋ ์ง<input type="checkbox" name="fruits" value="orange"><br> ๋ฐ๋๋<input type="checkbox" name="fruits" value="banana"><br> <button onclick="xxx()"> ๊ฒฐ๊ณผ๋ณด๊ธฐ</button> <div id="result"></div> </body>
<script type="text/javascript"> function xxx() { var arr = document.getElementsByName("fruits"); console.log(arr); var str = ""; for (var i = 0; i < arr.length; i++) { var c = arr[i]; if (c.checked) { str += c.value + "<br>"; } } document.getElementById("result").innerHTML = "<h1>" + str + "</h1>"; } </script>
์ธํ์ name ์์ฑ์ผ๋ก ์ฌ๋ฌ ์์๋ฅผ ์ ๋ ํ ์ ์๋ค. ๋จผ์ fruits๋ผ๋ name์ ๊ฐ์ง ์์๋ค์ ๋ฐฐ์ด๋ก ์ป์ด์จ๋ค. for ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๊บผ๋ด์จ ๋ค ์ฒดํฌ๋ฐ์ค๊ฐ checked ๋์ด์๋์ง ํ์ธํ๋ค. ์ฒดํฌ๋์ด์๋ ๊ฒ๋ค๋ง str ๋ณ์์ ๋ด์์ html์ ์ถ๋ ฅํ๋ค. ์ฒดํฌ๋ฐ์ค๋ onclick์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ค.
์ฝ์์์ arr์ ์ ๋ ฅํด๋ณด๋ฉด ๋ ธ๋๋ฆฌ์คํธ๋ฅผ ๋ฐํํ๋ ๊ฑธ ๋ณผ ์ ์๋ค. ์ฒดํฌ๋ ์ธํ์ ์ด์ด๋ณด๋ฉด
checked: true
๋ฅผ ๋ณผ ์ ์๋ค.onmouseover
<body> <table border="1"> <tr> <td><img src="../image/a.jpg" width="100" height="100"></td> <td><img src="../image/b.jpg" width="100" height="100"></td> <td><img src="../image/c.jpg" width="100" height="100"></td> </tr> <tr> <td colspan="3"> <img src="../image/a.jpg" width="300" height="300"></td> </tr> </table> </body>
<script type="text/javascript"> window.onload = function () { var imgs = document.getElementsByTagName("img"); console.log(imgs); for (var i = 0; i < imgs.length - 1; i++) { var img = imgs[i]; img.onmouseover = function () { console.log(imgs[3].src = this.src); } } } </script>
์ด๋ฏธ์ง ํ ์ด๋ธ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ๊ฐ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ค๋ค. ์ ์ฅ๋ ์ด๋ฏธ์ง src๊ฐ ์ถ๋ ฅ๋๋ค,
onsubmit
<body> <form action="target.html" onsubmit="return formSubmit()"> ์์ด๋<input type="text" name="userid" id="userid"> <span id="idSpan"></span><br> ๋น๋ฒ<input type="text" name="passwd" id="passwd"> <span id="pwSpan"></span><br> ์ด๋ฆ<input type="text" name="username" id="username"> <span id="nameSpan"></span><br> ์ด๋ฉ์ผ<input type="text" name="email" id="email"> <span id="emailSpan"></span><br> <input type="submit" value="๋ก๊ทธ์ธ"> <input type="reset" value="์ทจ์"><br> </form> </body>
<script type="text/javascript"> function formSubmit() { var result = true;//submit์ ํ ๊ฒ์ธ์ง์ ๋ํ ํ๋จ ๋ณ์ var str = ""; var userid = document.getElementById("userid").value; var passwd = document.getElementById("passwd").value; var username = document.getElementById("username").value; var email = document.getElementById("email").value; var idSpan = document.getElementById("idSpan"); var pwSpan = document.getElementById("pwSpan"); var nameSpan = document.getElementById("nameSpan"); var emailSpan = document.getElementById("emailSpan"); console.log("!") if (userid.length == 0) { str = "์์ด๋ ์๋ฌ"; idSpan.innerHTML = str; pwSpan.innerHTML = ""; nameSpan.innerHTML = ""; emailSpan.innerHTML = ""; result = false; } else if (passwd.length == 0 || Number.isNaN(parseInt(passwd))) { str = "๋น๋ฒ ์๋ฌ"; idSpan.innerHTML = ""; pwSpan.innerHTML = str; nameSpan.innerHTML = ""; emailSpan.innerHTML = ""; result = false; } else if (username.length >= 4 || username.length == 0) { str = "์ด๋ฆ ์๋ฌ"; idSpan.innerHTML = ""; pwSpan.innerHTML = ""; nameSpan.innerHTML = str; emailSpan.innerHTML = ""; result = false; } else if (email.length == 0) { str = "์ด๋ฉ์ผ ์๋ฌ"; idSpan.innerHTML = ""; pwSpan.innerHTML = ""; nameSpan.innerHTML = ""; emailSpan.innerHTML = str; result = false; } return result; } </script>
result = false;๋ ํ๋ฉด์ด ๋์ด๊ฐ์ง ์๋๋ก ๋ง์์ฃผ๋ ์ญํ ์ ํ๋ค. ์์ด๋์ ๋น๋ฐ๋ฒํธ๊ฐ ์ ๋ ฅ๋์ง ์์ ๊ฒฝ์ฐ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์คํ์ผ ์ ์ฉํ๊ธฐ
<body> <input type="button" id="vi" value="๋ณด์ด๊ธฐ" onclick="setView()"><br> <input type="button" id="unvi" value="๊ฐ์ถ๊ธฐ" onclick="unsetView()"><br> <input type="button" id="test1" value="ํ ์คํธ" onclick="styleTest()"><br> <input type="text" id="test" value="style์ ์ฉ"> <img id="images" src="../image/a.jpg"> </body>
<script type="text/javascript"> function setView() { var image = document.querySelector("#images"); image.style.display = "inline"; } function unsetView() { var image = document.querySelector("#images"); image.style.display = "none"; } function styleTest() { var txt = document.querySelector("#test"); txt.style = "color:red; font-size:40px"; } </script>
์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํด ์คํ์ผ ์์ฑ์ ํธ๋ค๋ง ํ ์ ์๋ค.
DOM Level 2 : addEventListener
addEventListener(eventName, handler, useCapture) -> ์ฐ๊ฒฐ removeEventListener(eventName, handler) -> ํด์
addEventListener๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์ ์ด๋ฒคํธ์ ์ฌ๋ฌ๊ฐ์ ํธ๋ค๋ฌ๋ฅผ ํ ๋นํ ์ ์๋ค. ๋งค๊ฐ๋ณ์์ ์ด๋ฒคํธ ์ด๋ฆ๊ณผ ํธ๋ค๋ฌ, ์บก์ณ์ฌ์ฉ์ฌ๋ถ๋ฅผ ์ ๋๋ค. ํธ๋ค๋ฌ ํจ์์ ํธ์ถ ๊ดํธ๋ฅผ ๋ถ์ด์ง ์๊ณ ํจ์ ์ด๋ฆ๋ง ์์ฑํ๋ค. removeEventListener๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฒคํธ๋ฅผ ํด์ ํ ์ ์๋ค.
useCapture๊ฐ false์ผ ๊ฒฝ์ฐ์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ผ๋ก ์ด๋ฒคํธ ์ ํํ๋ฉฐ true์ผ ๊ฒฝ์ฐ์ ์ด๋ฒคํธ์บก์ณ๋ง์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ ํํ๋ค. ๊ธฐ๋ณธ๊ฐ์ false์ด๋ค.
์ด๋ฒคํธ ์ ํ
์ด๋ฒคํธ๊ฐ ์ฒ์ ๋ฐ์๋๋ฉด DOM์ ์ต์์ ๊ฐ์ฒด์ธ document ๊ฐ์ฒด๋ก ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ฐ์๋ ์ด๋ฒคํธ๋ฅผ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์ณ ์ ํ์ํจ๋ค.
1. ์ด๋ฒคํธ ์บก์ณ (์บก์ณ๋ง)
document๋ถํฐ ์๋๋ก ๋ด๋ ค๊ฐ์ ์ด๋ฒคํธ ๋ฐ์์์์ ๋ถ๋ชจ๊ฐ์ฒด๊น์ง ์ ๋ฌ๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
2,.์ด๋ฒคํธ ํ๊ฒ
์ด๋ฒคํธ ๋ฐ์์์๊น์ง ์ ๋ฌํ๋ค.
3. ์ด๋ฒคํธ ๋ฒ๋ธ (๋ฒ๋ธ๋ง): JavaScript์ ๊ธฐ๋ณธ ์ฒ๋ฆฌ ๋ฐฉ์
์ด๋ฒคํธ ๋ฐ์์์์ ๋ถ๋ชจ์์ ์๋ก document๊น์ง ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๋ฒคํธ ์ ํ ๋ฐฉ์ง
<body> <div id="a" style="background-color: #ff0000"> a <div id="b" style="background-color: #00ff00"> b </div> </div> </body>
<script type="text/javascript"> window.onload = function () { var a = document.getElementById("a"); var b = document.getElementById("b"); a.addEventListener("click", function () { console.log("a"); }, false); b.addEventListener("click", function (e) { console.log("B"); e.stopPropagation(); }, false); }; </script>
b๋ฅผ ํด๋ฆญํ๋ฉด ๋ฒ๋ธ๋ง ํ์์ด ๋ฐ์ํด์ b์ ๋ถ๋ชจ์ธ a๊น์ง ์ถ๋ ฅ๋๋ค. ์บก์ณ๋ง์ false๋ก ์ง์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒคํธ ์ ํ๋ฐฉ์์ด ๋ฒ๋ธ๋ง ๋ฐฉ์์ด ๋๋ค. ์ฌ๊ธฐ์
e.stopPropagation();
๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.์ฒดํฌ๋ฐ์ค ์ด๋ฒคํธ ์ฐ์ต
<body> ํ์์ฃผ์ <input type="text" name="address" id="address" value="์์ธ์~"><br> ๋ฐฐ์ก์ง๊ฐ ๊ฐ์ผ๋ฉด ๋ค์์ ์ฒดํฌํ์ธ์ <input type="checkbox" name="chk" id="chk"><br> ๋ฐฐ์ก์ง ์ฃผ์ <input type="text" name="address2" id="address2"><br> <span id="test"></span> </body>
<script type="text/javascript"> document.getElementById("chk").addEventListener("click", check, false); document.getElementById("address2").addEventListener("keyup", function (e) { document.querySelector("#test").innerHTML = this.value; }, false); function check() { document.getElementById("address2").value = document.getElementById("address").value; } </script>
์ฒดํฌ๋ฐ์ค์ ์ฒดํฌํ๋ฉด ๋ฐฐ์ก์ง ์ฃผ์ ์ธํ์ ํ์์ฃผ์ ์ธํ ๋ฐธ๋ฅ๊ฐ ๋๊ฐ์ด ์ ๋ ฅ๋๋ค.
<body> ์ ์ฒด์ ํ<input type="checkbox" name="allCheck" id="allCheck"><br> <hr> ์ฌ๊ณผ<input type="checkbox" name="fruits" class="fruits" value="์ฌ๊ณผ"><br> ์๋ฐ<input type="checkbox" name="fruits" class="fruits" value="์๋ฐ"><br> ๋ฐ๋๋<input type="checkbox" name="fruits" class="fruits" value="๋ฐ๋๋"><br> ์ค๋ ์ง<input type="checkbox" name="fruits" class="fruits" value="์ค๋ ์ง"><br> <button id="test"> ํ์ธ</button> <span id="result"> </span> </body>
<script type="text/javascript"> window.onload = function () { document.getElementById("allCheck"). addEventListener("click", check, false); document.querySelector("#test").addEventListener("click", view, false); }; function check() { var fruits = document.getElementsByName("fruits"); for (var i = 0; i < fruits.length; i++) { fruits[i].checked = this.checked; } } function view() { var fruits = document.querySelectorAll(".fruits"); console.log("fruits"); var result = ""; for (var i = 0; i < fruits.length; i++) { var fu = ""; if (fruits[i].checked) { fu = fruits[i]; result += fu.value + " " } console.log(result); document.querySelector("#result").innerHTML = result; } } </script>
์ ํ ํ ํ์ธ์ ํด๋ฆญํ๋ฉด ์ ํํ ๋ด์ฉ์ ์ถ๋ ฅํ๋ค.
๐ NEXT : ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฒคํธ ํธ๋ค๋ง ๋ฌธ์ ์ฐ์ตํ๊ธฐ
๋ฐ์ํ'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฒคํธ ํธ๋ค๋ง ์ฐ์ต2 (0) 2020.09.13 ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ฒคํธ ํธ๋ค๋ง ์ฐ์ต1 (0) 2020.09.11 ์๋ฐ์คํฌ๋ฆฝํธ DOM ๊ฐ์ฒด ์ ์ด (0) 2020.09.09 ์๋ฐ์คํฌ๋ฆฝํธ Built-In ๋ด์ฅ๊ฐ์ฒด (0) 2020.09.08 ์๋ฐ์คํฌ๋ฆฝํธ ํจ์ ์ ์ธ, ์ฝ๋ฐฑ, ํธ์ถ ์ค์ผ์ค๋ง (0) 2020.09.07