<!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 ์ฐ๋ ๊ฒ ๋ฒ ์คํธ์ ๋๋ค.