Bibi's DevLog ๐ค๐
[์ธํ๋ฐ] Javascript์ ๋ฌธ - DOM๊ณผ HTML (์์/ํ๊ทธ/์๋ฆฌ๋จผํธ, ์์ฑ, ๋ธ๋ก ํ๊ทธ/์ธ๋ผ์ธ ํ๊ทธ, html๊ณผ JS ๋ถ๋ฆฌ, JS๋ก DOM ์ ์ดํ๊ณ ๊ฐ ๋ฐ๊พธ๊ธฐ) ๋ณธ๋ฌธ
[์ธํ๋ฐ] Javascript์ ๋ฌธ - DOM๊ณผ HTML (์์/ํ๊ทธ/์๋ฆฌ๋จผํธ, ์์ฑ, ๋ธ๋ก ํ๊ทธ/์ธ๋ผ์ธ ํ๊ทธ, html๊ณผ JS ๋ถ๋ฆฌ, JS๋ก DOM ์ ์ดํ๊ณ ๊ฐ ๋ฐ๊พธ๊ธฐ)
๋น๋น bibi 2020. 10. 22. 15:13* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
DOM๊ณผ HTML
HTML
- HyperText Markup Language ์ ์ฝ์
- WWW(World Wide Web)์ 3์์ ์ค ํ๋.
- HTML (์น ๋ฌธ์)
- URL (์น ๋ฌธ์์ ์ฃผ์)
- HTTP (์น ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํต์ ๊ท์น)
- ํ ๋ฒ๋์ค๋ฆฌ์ ์ํด ๋ง๋ค์ด ์ก๋ค. (WWW์ ํจ๊ป ๋ง๋ค์ด์ง)
- ์ธํฐ๋ท = ๋คํธ์ํฌ๋ง(๋ฏธ๊ตญ ๊ตญ๋ฐฉ์ฑ์์ ๋ง๋ฆ)
์ธํฐ๋ท์ ํตํด ์น ๋ธ๋ผ์ฐ์ ์์ ๋ณด์ด๋ ํ๋ฉด์ด WWW์ด๋ค.
์์ (์๋ฆฌ๋จผํธ, Element) (=ํ๊ทธ)
- HTML์์์ ์์ ๋จ์๋ ํ๊ทธtag ์ด๋ค.
- ์ฌ๋ ํ๊ทธ<>์ ๋ซ๋ ํ๊ทธ</>๋ก ์ด๋ฃจ์ด์ง.
- ๋ซ๋ ํ๊ทธ๊ฐ ์๋ ํ๊ทธ๋ ์๋ค. (img, br, input)
- ํ๊ทธtag๋ '์์ฑattributes' ๊ณผ '์ปจํ
์ธ contents'๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ํ๊ทธ ์ฌ์ด์ ๋ค์ด์ค๋ ๊ฐ์ '์ปจํ ์ธ contents'
- ํ๊ทธ ์์ ๋ค์ด์ค๋ ๊ฐ์ด '์์ฑattributes'๊ณผ '์์ฑ๊ฐ'
์๋ฅผ ๋ค์ด
<h2 id="header"> hello </h2> ์์..
<h2> : ์ฌ๋ ํ๊ทธ
</h2> : ๋ซ๋ ํ๊ทธ
hello : ์ปจํ ์ธ
id : ์์ฑ
"header" : (์์ฑ id์) ์์ฑ๊ฐ
์์ฑ(Attributes)
๊ฐ์ฒด์ ์์ฑ๊ณผ ๋น์ทํ๊ฒ, ์๋ฆฌ๋จผํธ(ํ๊ทธ)๋ ์์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค.
โ ๊ฐ์ฒด์ ์๋ฆฌ๋จผํธ(ํ๊ทธ)๋ ์๋นํ ์ ์ฌํ๋ค.
<a href="http://codesquad.kr" title="์ฝ๋์ค์ฟผ๋">
<a> : ์๋ฆฌ๋จผํธ=ํ๊ทธ
href : ์์ฑ
"http://codesquad.kr" : (์์ฑ href์) ์์ฑ๊ฐ
title : ์์ฑ
"์ฝ๋์ค์ฟผ๋" : (์์ฑ title์) ์์ฑ๊ฐ
๋ธ๋ก ์๋ฆฌ๋จผํธ(๋ธ๋ก ํ๊ทธ Block Tag)
(์ฌ์ฉํ์ ๋) p, h1, div .. ์ฒ๋ผ ์ค์ด ๋ฐ๋๋ ์๋ฆฌ๋จผํธ(ํ๊ทธ)
์ธ๋ผ์ธ ์๋ฆฌ๋จผํธ(์ธ๋ผ์ธ ํ๊ทธ Inline Tag)
(์ฌ์ฉํ์ ๋) span, img, input, button, a .. ์ฒ๋ผ ์ค๋ฐ๋์ด ์๋ ์๋ฆฌ๋จผํธ(ํ๊ทธ)
HTML๊ณผ JS ๋ถ๋ฆฌํ๊ธฐ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h2>Hello</h2>
<p id="main">This is p element</p>
<script>
// ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ
</script>
</body>
</html>
์ง๊ธ๊น์ง๋ html์์ javascript๋ฅผ ๋ฃ์ด์ ์ผ์ง๋ง, ์ด์ html๊ณผ javascript๋ฅผ ๋ถ๋ฆฌํด ๋ณผ ๊ฒ์ด๋ค.
๋ ํ์ผ์ ๋ถ๋ฆฌํด ์ข ๋ ๊น๋ํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
dom.html (๋ถ๋ฆฌํ htmlํ์ผ)
htmlํ์ผ์์ <script></script> ์ฌ์ด์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ์ ๋ฃ๋ ๋์ ,
<script src="์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ๊ฒฝ๋ก"></script> ๋ก ์ ์ด์ค ๋ค
JSํ์ผ์ ๋ฐ๋ก ๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ฃ๋๋ค.
*src = source์ ์ค์ธ๋ง.
<!DOCTYPE html>
<meta charset="UTF-8">
<html>
<title>HTML Tutorial</title>
<head>
</head>
<body>
<h1>This is a heading</h1>
<h1>Another h1 heading</h1>
<p id='main'>This is a paragraph.</p>
<script src="dom_test.js"></script>
</body>
</html>
dom_test.js (๋ถ๋ฆฌํ JS ํ์ผ)
console.log("Hello JS");
DOM (Document Object Model, ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ)
- HTML๋ฌธ์์ "์์element"๋ค์ "๊ฐ์ฒดobject"๋ฅผ ์ด์ฉํด์ ๊ณ์ธต ๊ตฌ์กฐ๋ก ํํํ๋ ๋ฐฉ๋ฒ.
* ๊ณ์ธต ๊ตฌ์กฐ hierarchy structure : ์กฑ๋ณด์ ๊ฐ์ ๋ถ๋ชจ-์์์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ณ์ธต๊ตฌ์กฐ๋ผ๊ณ ์นญํจ. (= ํธ๋ฆฌ ๊ตฌ์กฐ) - DOM์ ํ์ค: W3CDOM (DOM ํ์ค์์ํ)
- DOM ๊ตฌํ์ฒด: ์น ๋ธ๋ผ์ฐ์ . Gecko(๊ฒ์ฝ - ๋ชจ์ง๋ผ ํ์ด์ดํญ์ค์์ ์ฌ์ฉ), Webkit(์ ํ์์ ๋ง๋ฆ) ๋ฑ
html ๊ฐ์ฒด
HTML ๋ฌธ์ ์์ฒด๋ "๊ฐ์ฒด"๋ก ๊ฐ์ฃผ๋๋ค.
- window: ์ต์์ ๊ฐ์ฒด!
- document: dom์ ์ต์์ ๊ฐ์ฒด์ด๋ฉด์ window์ ํ์ ๊ฐ์ฒด.
(์๋๋ window.document๋ก ์ฌ์ฉํด์ผ ํ์ง๋ง, ๋์ ๊ฐ๊ธฐ ๋๋ฌธ์ document๋ก ์ฌ์ฉ ๊ฐ๋ฅ)
(window.document === document; // true)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Big title</h1>
<h2>Hello 1</h2>
<p id="main">This is p element</p>
<h2>Hello 2</h2>
<script src="dom_test.js">
// ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ
</script>
</body>
</html>
Q. ์ ๋ฌธ์์ ๊ณ์ธต๊ตฌ์กฐ๋?
((↑ ์์))
html
window
document
h1 (1๊ฐ)
h2 (1๊ฐ)
p (1๊ฐ)
h2 (1๊ฐ)
((↓ ํ์))
var list = document.getElementById('main');
main.innerHTML = "Hello";
JS๋ก DOM ์ ์ดํ๊ธฐ
๋ชจ๋ HTML ์๋ฆฌ๋จผํธ๋ ๊ฐ์ฒด์ด๋ฏ๋ก ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก JS๋ก ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
var a = document.getElementsByTagName('h2');
// ()๋ด์ ํ๊ทธ ์ด๋ฆ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋.
// get"Elements"ByTagName()์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํ๊ทธ์ด๋ฆ์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค.
var b = document.getElementById("");
// id๊ฐ์ด ""์ธ ๊ฐ์ฒด ํ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋.
// id๋ uniqueํ๋ฏ๋ก ์ธ์ ๋ ํ๋์ด๋ค. ๋ฐ๋ผ์ get"Element"ById()
a; // HTMLCollection(2) [h2, h2]
a[0]; // <h2>Hello 1</h2>
a[1]; // <h2>Hello 2</h2>
//.innerHTML : ํ๊ทธ ๋ด์ ์ปจํ
์ธ ๋ฅผ ๊ฐ๋ฆฌํด.
a[0].innerHTML; // "Hello 1"
a[0].innerHTML = "Hello"; // ์น๋ฌธ์์ ์ฒซ ๋ฒ์งธ h2 ๋ด์ฉ์ด 'Hello 1' -> 'Hello'๋ก ๋ฐ๋.
DOM ๊ฐ์ฒด์ ๊ฐ ๋ฐ๊พธ๊ธฐ
var element = document.getElementById('id')
element.innerHTML = '๊ฐ'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Big title</h1>
<h2>Hello 1</h2>
<p id="main">This is p element</p>
<h2>Hello 2</h2>
<script src="dom_test.js"></script>
</body>
</html>
// ์ html๋ฌธ์์์ JS์์ ์ด๋ ๊ฒ ์ ์ดํ๋ฉด
<script>
var p = document.getElementById("main");
p; // <p id="main">This is p element</p>
p.innerHTML = "๋๋ pํ๊ทธ์
๋๋ค"; // <p id="main">๋๋ pํ๊ทธ์
๋๋ค</p> ๋ก ๋ฌธ์ ๋ด์ฉ์ด ๋ฐ๋.
</script>
์ฐธ์กฐ ๊ฐ์ข ) ์ํ์ฝ๋ฉ WEB1 - HTML & Internet
opentutorials.org/course/3084
์ด ๊ฐ์ข๋ฅผ ํจ๊ป ๋ค์ผ๋ฉด html๊ณผ ์ธํฐ๋ท์ ๋ํด ๋ ๊น๊ฒ ์ดํดํ ์ ์์ ๊ฒ์ด๋ค.