ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ 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>
        ์ข‹์•„ํ•˜๋Š” &nbsp;&nbsp;&nbsp; ๊ณผ์ผ ์„ ํƒํ•˜๊ธฐ<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 + "&nbsp;&nbsp;"
                }
                console.log(result);
                document.querySelector("#result").innerHTML = result;
            }
        }
    </script>

    ์„ ํƒ ํ›„ ํ™•์ธ์„ ํด๋ฆญํ•˜๋ฉด ์„ ํƒํ•œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

     

     

     

    ๐Ÿ˜œ NEXT : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ๋ฌธ์ œ ์—ฐ์Šตํ•˜๊ธฐ

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

๊ฐœ๋ฐœ๊ณต๋ถ€