๐Ÿ‘โ€๐Ÿ—จjavascript(js๋กœ htmlํƒœ๊ทธ ์ƒ์„ฑ,Ajax, sticky ํฌ์ง€์…˜, switch๋ฌธ๋ฒ•)

stayby94ยท2023๋…„ 8์›” 1์ผ

JS๋ฌธ๋ฒ•

๋ชฉ๋ก ๋ณด๊ธฐ
9/15

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ html์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

  • createElement ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ธธ๊ณ  ๋ณต์žกํ•ด์ง

  • insertAdjacentHTML()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ

    • insertAdjacentHTML()ํ•จ์ˆ˜๋ž€ ์š”์†Œ ์•ˆ์— ๋ฌธ์žํ˜• html์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š” ๋ผ๋Š” ์˜๋ฏธ์˜ ํ•จ์ˆ˜.
    <div id="test">
    
    </div>
    <script>
      const ํ…œํ”Œ๋ฆฟ = '<p>์•ˆ๋…•</p>'
      document.querySelector('#test').insertAdjacentHTML('beforeend', ํ…œํ”Œ๋ฆฟ)
    • ( ) ์•ˆ์— beforeend ๋Š” ์ถ”๊ฐ€ํ•  ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ์•ˆ์ชฝ ๋งจ๋ฐ‘์— ํ…œํ”Œ๋ฆฟ๋ผ๊ณ  ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€!
    • ๋งŒ์•ฝ ๊ธฐ์กด์— ์žˆ๋˜ htmlํƒœ๊ทธ๋ฅผ ์—†์• ๊ณ  ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋งŒ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด innerHTML์„ ์“ฐ๋ฉด ๋จ.

Ajax

  • ์„œ๋ฒ„์™€ Ajax๋กœ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊ฑฐ์ž„.

    • 1. ์–ด๋–ค ๋ฐ์ดํ„ฐ์ธ์ง€? (๋ฐ์ดํ„ฐ์˜ URL) / 2. ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ์„ ํ• ์ง€ ๊ธฐ์žฌ (GET OR POST)

      • ์„œ๋ฒ„๋ž€? ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์ดํ•ดํ•ฉ์‹œ๋‹ค.
      • get์€ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์‹ถ์„ ๋•Œ, post๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ.
    • GET ์š”์ฒญํ•˜๋Š”๋ฒ• : ๋ธŒ๋ผ์šฐ์ € URL์ฐฝ์— ์ฃผ์†Œ์น˜๊ณ  ์—”ํ„ฐ์น˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋™์ž‘๋ฐฉ์‹์ž„.

    • POST ์š”์ฒญํ•˜๋Š” ๋ฒ• : <form action="url" method="post"></form>

    • ์œ„ 2๊ฐ€์ง€ ๋ฐฉ์‹์˜ ๋‹จ์ !! : get/post ์š”์ฒญํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ๋จ.

    • ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿด๋•Œ Ajax๋ฅผ ํ™œ์šฉํ•ด์„œ ์ƒˆ๋กœ๊ณ ์นจ์—†์ด get,post ์š”์ฒญ ๊ฐ€๋Šฅ!!!

  • Ajax๋กœ GET ์š”์ฒญํ•˜๊ธฐ

    $.get('url').done(function(data){
    	console.log(data)
    })
    • GET์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์„ ์‹œ done( )์•ˆ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋‹ฌ๋ž€ ์˜๋ฏธ์ž„.
    • get์š”์ฒญ์œผ๋กœ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋Š” done( ) ์•ˆ์— ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ž˜ ์ €์žฅ์ด ๋จ.
  • Ajax๋กœ POST ์š”์ฒญํ•˜๊ธฐ!

    $.post('url', {name:'kim'}).done(function(data){
    	console.log(data)
    })
    • get ์š”์ฒญ๋ฐฉ์‹๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜๋‚˜ url ๋’ค์— 2๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋‚ด๊ฐ€ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ์Œ.
  • Ajax ์‹คํŒจ ์‹œ ํŠน์ • ์ฝ”๋“œ์‹คํ–‰๋ฐฉ๋ฒ•

    $.get('url').done(function(data){
    	console.log(data)
    })
    .fail(function(){
    	console.log('์‹คํŒจ')
    })
    • .fail( )์„ done( ) ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์จ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค~
  • fetch๋ฅผ ํ™œ์šฉํ•œ Ajax

    • fetch๋กœ get ์š”์ฒญ์ฝ”๋“œ ๋งŒ๋“ค๊ธฐ

      fetch('url').then(res => res.json()).then(data=>{
      	console.log(data)
      })
      .catch(error => {
      	console.log(error)
      })
      • ์›๋ž˜ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ ค๋ฉด ๋ฌธ์ž๋งŒ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์ž‡๋Š”๋ฐ, array๋‚˜ object๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ถ์œผ๋ฉด " "๋ฅผ ์ณ์„œ ๋ฌธ์ž์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด์•ผ ํ•จ.
      • "{"price: 4000"}" ๊ณผ ๊ฐ™์€ ํ˜•์‹์„ JSON์ด๋ผ๊ณ  ํ•จ.
      • ๊ทธ๋Ÿฌ๋‚˜ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋ฌธ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ์ž๋ฃŒ๋งŒ ๋ฝ‘์•„์“ฐ๊ธฐ๊ฐ€ ์–ด๋ ค์›€.
      • ๊ทธ๋ž˜์„œ JSON์„ object๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” .then(res => res.json()) ์ด ์ฝ”๋“œ๋„ ๊ฐ™์ด ๋“ค์–ด๊ฐ.

position: sticky

  • CSS ๋ฌธ๋ฒ•์ด์ง€๋งŒ ์ฐธ๊ณ ์šฉ!

    • ์Šคํฌ๋กค์ด ๋˜์—ˆ์„ ๋•Œ ํ™”๋ฉด์— ๊ณ ์ •๋˜๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•˜๋Š” css ์†์„ฑ์ž„.
    • position: fixed๋Š” ํ•ญ์ƒ ํ™”๋ฉด์— ๊ณ ์ •์ด ๋˜๋Š” ์š”์†Œ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋ฐฐ์› ๋Š”๋ฐ ์ด ์†์„ฑ๊ณผ์˜ ์ฐจ์ด๋Š”
    • position: sticky๋Š” ์Šคํฌ๋กค์ด ๋˜์–ด์„œ ์ด ์š”์†Œ๊ฐ€ ํ™”๋ฉด์— ๋‚˜์˜ค๋ฉด ๊ณ ์ •์‹œํ‚จ๋‹ค๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง.

    ๐Ÿ’ฅ ์ฃผ์˜์‚ฌํ•ญ!!

    • ์Šคํฌ๋กค์„ ํ•  ๋งŒํ•œ ๋ถ€๋ชจ ๋ฐ•์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ,
    • top ๋“ฑ ์ขŒํ‘œ์†์„ฑ๊ณผ ํ•จ๊ป˜ ์จ์•ผ ์ œ๋Œ€๋กœ ๋ณด์ž„.
    .image {
    float: right;
    width : 400px;
    position: sticky;
    top: 100px;
    }
    • ๋งจ์œ„์—์„œ๋ถ€ํ„ฐ 100px ์œ„์น˜์—์„œ ๊ณ ์ •์ด ๋จ.
    • ๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ชจ๋ฐ•์Šค๋ฅผ ๋„˜์–ด์„œ ์Šคํฌ๋กค ๋˜๋ฉด ์ด๋ฏธ์ง€๋„ ๊ฐ™์ด ์‚ฌ๋ผ์ง!

Switch ๋ฌธ๋ฒ•

  • ๊ฐ„ํ˜น ์กฐ๊ฑด๋ฌธ ์ž‘์„ฑ ์‹œ if๋ฌธ๋Œ€์‹  switch ์‚ฌ์šฉ

    let ๋ณ€์ˆ˜ = 2 + 2
    switch(๋ณ€์ˆ˜){
    	case 3:
      	alert('๋ณ€์ˆ˜๊ฐ€ 3์ด๋„ค์š”');
          break
      case 4:
      	alert('๋ณ€์ˆ˜๊ฐ€ 4์ด๋„ค์š”');
          break
      default:
      	alert('์•„๋ฌด๊ฒƒ๋„ ํ•ด๋‹น์•ˆ๋จ')
          break
    }
    • if์™€์˜ ์ฐจ์ด์  : if๋Š” ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์‹์ด ๊ฐ€๋Šฅํ•จ.
    • ๊ทธ๋Ÿฌ๋‚˜ switch๋Š” ๋ณ€์ˆ˜ 1๊ฐœ๋งŒ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•จ.(๋“ฑํ˜ธ๋น„๊ต ๋ฐ–์— ์•ˆ๋จ..)
    • defalut๋Š” else์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์ด๋ฉฐ,
    • break๋Š” ์‹คํ–‰์„ ์ค‘์ง€ํ•ด๋‹ฌ๋ผ๋Š” ์˜๋ฏธ. ๋งŒ์•ฝ ๋ธŒ๋ ˆ์ดํฌ๊ฐ€ ์—†์œผ๋ฉด ์•„๋ž˜ ์ฝ”๋“œ๋“ค๋„ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰๋จ. ใ… ใ… 
  • ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ(์‹ฌ๋ฆฌ๊ฒŒ์ž„)

    • ๋ฌผ์— ๋น ์ง€๋ฉด ๋ˆ„๊ตฌ๋ฅผ ๊ตฌํ• ์ง€์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ alert ๋„์šฐ๊ธฐ.

      <div id="quiz">
      <h4>๋ฌผ์— ๋น ์ง€๋ฉด ๋ˆ„๊ตฌ๋จผ์ € ๊ตฌํ•  ๊ฒƒ์ž„?</h4>
      <button>์™€์ดํ”„</button>
      <button>๋ถ€๋ชจ๋‹˜</button>
      <button>ํ‚ค์šฐ๋˜ ๊ฐœ</button>
      </div>
      <script>
      document.querySelector('#quiz').addEventListener('click', function(e){
       switch (e.target.innerHTML){
         case '์™€์ดํ”„':
           alert('์™€์ดํ”„๋ฅผ ์ข‹์•„ํ•˜์‹œ๋„ค์š”');
           break
         case '๋ถ€๋ชจ๋‹˜':
           alert('ํšจ์ž๋„ค์š”');
           break
         case 'ํ‚ค์šฐ๋˜ ๊ฐœ':
           alert('์—ญ์‹œ ์‚ฌ๋žŒ๋ณด๋‹จ ๋™๋ฌผ์ด ๋” ๋‚ซ์ฃ ');
           break
       }
      });
      </script>

0๊ฐœ์˜ ๋Œ“๊ธ€