50 Project In 50 Days-Dad jokes

Parkbossยท2025๋…„ 9์›” 10์ผ

50 Project In 50 Days

๋ชฉ๋ก ๋ณด๊ธฐ
8/8
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="style.css" />
    <title>Dad Jokes</title>
  </head>
  <body>
    <div class="container">
      <h3>Don't Laugh Challenge</h3>
      <div id="joke" class="joke">// Joke goes here</div>
      <button id="jokeBtn" class="btn">Get Another Joke</button>
    </div>
    <script src="script.js"></script>
  </body>
</html>

const jokeEl = document.getElementById('joke');
const jokeBtn = document.getElementById('jokeBtn');

jokeBtn.addEventListener('click', generateJoke);

generateJoke();
async function generateJoke() {
  const config = {
    headers: {
      Accept: 'application/json',
    },
  };

  const res = await fetch('https://icanhazdadjoke.com', config);

  const data = await res.json();

  jokeEl.innerHTML = data.joke;
}

// function generateJoke() {
// const config = {
// Headers: {
// Accept: 'application/json',
// },
// };
//
// fetch('https://icanhazdadjoke.com', config)
// .then((res) => res.json())
// .then((data) => (jokeEl.innerHTML = data.joke));
// }
//

๐Ÿ”‘ ํ•ต์‹ฌ ์ฐจ์ด: id vs class

id -> ํŽ˜์ด์ง€ ์•ˆ์—์„œ ์œ ์ผ(unique) ํ•ด์•ผ ํ•จ.

document.getElementById('...') ๊ฐ™์€ DOM ์ ‘๊ทผํ•  ๋•Œ ๋งŽ์ด ์”€.

ํ•˜๋‚˜์˜ ์š”์†Œ๋งŒ ์ •ํ™•ํžˆ ์ฐ์–ด๋‚ผ ๋•Œ ์œ ๋ฆฌ.

class -> ์—ฌ๋Ÿฌ ์š”์†Œ์—์„œ ๊ณตํ†ต ์Šคํƒ€์ผ ์ค„ ๋•Œ ์‚ฌ์šฉ.

document.getElementsByClassName('...') or querySelectorAll('.className') ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์„ ํƒ๋จ.

ํŠน์ • 1๊ฐœ๋งŒ ๋‹ค๋ฃจ๋ ค๋ฉด ์ธ๋ฑ์‹ฑ ํ•„์š” ([0] ์ด๋Ÿฐ ์‹์œผ๋กœ).

๐Ÿ‘‰ ์ง€๊ธˆ ์ฝ”๋“œ์—์„œ ์™œ id๋ฅผ ์“ฐ๋Š”๊ฐ€?
const jokeEl = document.getElementById('joke');

์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋”ฑ ํ•˜๋‚˜์˜ joke ์˜์—ญ๊ณผ ๋”ฑ ํ•˜๋‚˜์˜ ๋ฒ„ํŠผ๋งŒ ์กด์žฌ.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ id๋กœ ๋ฐ”๋กœ ์žก์•„์˜ค๋Š” ๊ฒŒ ์ง๊ด€์ ์ด๊ณ  ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ class๋กœ ํ•œ๋‹ค๋ฉด:

const jokeEl = document.getElementsByClassName('joke')[0];
const jokeBtn = document.getElementsByClassName('btn')[0];

์ด๋ ‡๊ฒŒ ๋ฐฐ์—ด-like ๊ฐ์ฒด์—์„œ ๊บผ๋‚ด์•ผ ํ•ด์š”. ์ข€ ๋” ๊ท€์ฐฎ์ฃ .

๐Ÿš€ ์ •๋ฆฌ

ํ•˜๋‚˜๋ฟ์ธ ์š”์†Œ โ†’ id ์‚ฌ์šฉ (๋น ๋ฅด๊ณ  ์ง๊ด€์ )

์—ฌ๋Ÿฌ ์š”์†Œ์— ๊ณตํ†ต ์Šคํƒ€์ผ/๋™์ž‘ โ†’ class ์‚ฌ์šฉ

์ฆ‰, ์Šคํƒ€์ผ๋ง์€ class, ๋‹จ์ผ DOM ์กฐ์ž‘์€ id ์“ฐ๋Š” ๊ฒŒ ๋ฒ ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

profile
ur gonna figure it out. just like always have.

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