- HTML๊ณผ JavaScript๋ฅผ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ๐DOM์ ๋ํด์ ๋ฐฐ์ฐ๊ณ HTML๊ณผ JavaScript๊ณผ ๐์ด๋ป๊ฒ ์ฐ๋๋์ด ๋์ํ๋์ง ๊ทธ ๊ณผ์ ์ ์ดํด๋ณด์
HTML๊ณผ CSS ๊ด๊ณ
, HTML์์ CSS๋ฅผ ์ฌ์ฉํ๋ค.
Inline style
์ ์ฉ<style>...</style>
์ ์ฉ.css
, ์ ์ง๋ณด์ ์ธก๋ฉด์์ 3๋ฒ์ด ์ต๊ณ ..๐JavaScript๋
์น ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ๋ ค๊ณ ๋ง๋ ์ธ์ด์ด๋ค.
<script>..</script>
.js
์ ์ง๋ณด์ ์ธก๋ฉด์์ 2๋ฒ ์ต๊ณ ..๐
DOM
์ JavaScript์์ ์ ์ด๋ฏธ์ง์ฒ๋ผHTML
์ ํฅํ๋ ํ์ดํ ๋ฐฉํฅ์ ์กด์ฌํ๋ค.DOM
์ JavaScript๊ฐ HTML์ ์กฐ์ํ๊ธฐ ์ํด ๊ฑฐ์ณ์ผํ๋ค.
-> ๋ฐ๋ผ์JavaScript
๊ฐHTML
์ ์กฐ์ํ๊ธฐ ์ํด ์ ๊ณตํ๋ ๋๊ตฌ๊ฐ ๋ฐ๋กDOM
์ด๋ค.
JavaScript
๋ ์น ํ์ด์ง์ ์ ๊ทผํ๊ณ ํ์ด์ง๋ฅผ ์์ ํ ์ ์๊ณ ์ด๋ ๊ฒ ๋์ ์ธ ์นํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด์DOM
์ด ํ์ํ๋ค.
-DOM
์ ํตํด์ ์นํ์ด์ง์ ์ ๊ทผํ ์ ์๊ณ ์์ ์์ฑ, ๋ด์ฉ ์ถ๊ฐ, ํด๋์ค ๋ถ์ฌ, ์คํ์ผ ์์ ๋ฑ์ด ๊ฐ๋ฅํ๋ค.
-WHAT ISโ
๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model, DOM)
์ด๋ ์น ํ์ด์ง ๋ด์ ๋ชจ๋ ์ฝํ ์ธ (HTML)๋ฅผ ๊ณ์ธตํ์์ผ๊ฐ์ฒด๋ก ๋ํ๋ด๋ ๋ชจ๋ธ
์ ์๋ฏธํ๋ค.- ์ฌ๊ธฐ์ ์ค์ํ ๋จ์ด๋ ๐
๊ฐ์ฒด
๋ค
<script> // ๋ฐฐ๊ฒฝ์ ํ๋์์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ document.body.style.background = 'blue' </script>
- JavaScript์ dot ์ฐ์ฐ์
.
๋ ๊ฐ์ฒด ๋ด์ ๋ฐ์ดํฐ ํ๋กํผํฐ์ ์ ๊ทผํ๋ ๋ฌธ๋ฒ์ผ๋ก ์ฒซ ์์์ ์ธdocument
๋ ๊ฐ์ฒด์ด๋ค.document
๊ฐ์ฒด๋ ํ์ด์ง์ ๊ธฐ๋ณธ ์ง์ ์ ์ผ๋กdocument
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ ํ์ด์ง์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๊ฑฐ๋ html ์์๋ฅผ ์๋ก ๋ง๋ค๊ฑฐ๋ ํด๋์ค๋ฅผ ๋ถ์ฌํ๊ฑฐ๋ ์คํ์ผ์ ๋ถ์ฌํ๋ ๋ฑ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๐โโ๏ธ? >JavaScript
๋กHTML
์ ๋ฌธ์๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํดdocument
๊ฐ์ฒด์ ์ ๊ทผํ๋๊ฑด ์๊ฒ ๋๋ฐ CSS์ style์ ์ ๋ฐ๋์ฃต ?
๐โโ๏ธ! >JavaScript
๋ก HTML์document
์ ์ ๊ทผํ์ฌ ํ๊ทธ์ style ์์ฑ์ ๋ฐ๊พธ๋ฉด ์คํ์ผ ์ ์ฉ์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์ธ๋ผ์ธ ์คํ์ผ์ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃต !
DOM ๊ฐ์ฒด ํธ๋ฆฌ ๊ตฌ์กฐ
-DOM ๊ฐ์ฒด ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์๊ฐํํ ์๋ฃ
- HTML ํธ๋ฆฌ ๊ตฌ์กฐ๊ฐ
๊ฐ์ฒด
์ ํํ์ ์ ์ฌํ๋ค- ๊ฐ๊ฐ์ HTML ํ๊ทธ๋
์์ ๋ ธ๋(element node)
ํน์์์
๋ผ๊ณ ํ๋ฉฐ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋ค.- root ๋ ธ๋์ธ
html
์ ๊ธฐ์ค์ผ๋กhead
,body
๋ผ๋ ์์ ๋ ธ๋๊ฐ ์์ผ๋ฉฐ ํํ๊ฐ ๋ง์น ๋๋ฌด ๊ฐ์ง(ํธ๋ฆฌ ๊ตฌ์กฐ)์ ๊ฐ์ด ์์ ๋ ธ๋๋ค์ ํ์ฑํ๊ณ ์๋ค.<script> const obj = { html : { body : { div: { div: { div: 1 } } } } } obj.html.body.div.div.div </script>
JavaScript
๋ ์นํ์ด์ง์ HTML ๊ณ์ธตํ์์ผ ํธ๋ฆฌ๊ตฌ์กฐ๋ก ๋ง๋ ๊ฐ์ฒด ๋ชจ๋ธ์ธDOM
์ผ๋ก ์นํ์ด์ง์ ์ ๊ทผํ๊ณ ํ์ด์ง ์์ ์ด ๊ฐ๋ฅํ๋ฉฐDOM
์ ์ด์ฒ๋ผHTML
๊ณผJavaScript
์ธ์ด๋ฅผ ์๋ก ์๋ ์ญํ ์ ํ๋ค.
์ ๊ทผ
ํ๊ธฐ์ํด์ ?DOM
์ ํตํด ๋ด๊ฐ ์ํ๋ ์์์ ์ ๊ทผํ๊ธฐ ์ํด์ id
๋ class
, css ์ ๊ทผ์
๋ฅผ ํ์ฉํ์ฌ ์ ๊ทผํ ์ ์๋ค.-HOW TO USEโโ
<script> // ๋ฐฐ๊ฒฝ์ ํ๋์์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ document.body.style.background = 'blue' </script>
document.body
๋กbody
์์์ ์ ๊ทผํ ์ ์๋ค.
-์์ ๋
ธ๋ ์ ๊ทผ ํจ์ 5๊ฐ์ง
document
๋ผ๋ ์ง์ ์ ์์ ์ถ๋ฐํ์ฌ ์ํ๋ ์์ ๋ ธ๋์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค์๋ ๋ค์๊ณผ ๊ฐ์ ํจ์๋ค์ด ์กด์ฌํ๋ค.
-document.getElmentById()
-document.getElementsByClassName()
-document.getElementsByTagName()
-document.querySelector()
-document.querySelectorAll()
- ์ ํจ์๋ค ๋ชจ๋ document ๊ฐ์ฒด์ ์๋ ํจ์๋ก ์ด๋ฅผ ์ฌ์ฉํด ์ํ๋ ์์์ ์ ๊ทผํ ์ ์๋ค.
Elements
์ธ ๊ฒฝ์ฐ์ 2> Element
์ธ ๊ฒฝ์ฐ๋ก ๋๋ ์ง๋ค.<html>
<body>
<main>
<section>
<article class='myClass'>์ฌ๊ธฐ์ ์ ๊ทผํ๊ณ ์ถ์ต๋๋ค</article>
<article class='myClass'>์ฌ๊ธฐ๊ฐ ์๋๋๋ค</article>
<article class='myClass'>์ฌ๊ธฐ๊ฐ ์๋๋๋ค</article>
</section>
</main>
<footer>
<small id='contactEmail'>wecode@myemail.com</small>
</footer>
</body>
</html>
- 1>
getElemntsByClassName
์์Elements
๋กclass ํ๋กํผํฐ
์ธ 'myClass'์ ํด๋นํ๋ ์์๋ฅผ ๋ด์ ์ปฌ๋ ์ ์ด ๋ฐํ๋ฉ๋๋ค.<script> const my1stClass = document.getElementsByClassName('myClass')[0] console.log(my1stClass.innerHTML) </script>
- ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ ์ปฌ๋ ์ ์ค ์ฒซ ๋ฒ์งธ์ ์ ๊ทผํ๊ธฐ ์ํด
[0]
์ฒ๋ผ ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ๋ฏ ํ๋๋ฅผ ํน์ ํด์ผ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.- ๋ฐ๋ฉด 2>
getElementById
์์Element
๋Id ํ๋กํผํฐ
๋ฅผ ๊ฐ์ง 'contactEmail'๋ ๊ณ ์ ํ ๊ฐ์ด๋ฏ๋ก ์ด๋ฅผ ํตํด Id ๊ฐ์ ๊ฐ์งํ๋์ ์์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.<script> const contactEmaill = document.getElementById('contactEmail'); contactEmaill.style.color = 'green' </script>
EX> ์ด๋ฏธ์ง ํด๋ฆญ์(์ด๋ฒคํธ) ์๋(ํจ์)์ด ๋ฐ์ํ๋๋กํ๊ณ ์ถ๋ค๋ฉด?
STEP1> ์ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ทผํจ์๋ก ์ ๊ทผํด์ ๊ฐ์ ธ์จ๋ค.
addEventListener
, ์ ๊ทผํจ์๋ก ์ด๋ฒคํธ๋ฅผ ์ฐ๊ฒฐ์์ผ๋๋๋ฐ addEventListener
๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ค๋ฌ ํจ์๋ฅผ ์คํ์ํฌ ์ ์๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.STEP2> ์ด๋ค ์ด๋ฒคํธ
๋ฅผ ๋ฐ์ํ ๋ ์คํํ ์ง addEventListener
์ ์ฒซ ๋ฒ์งธ ์ธ์์ ๋ฌธ์์ด๋ก ์ ๋ฌํ๋ฉฐ, ์คํ์ํฌ ํธ๋ค๋ฌ ํจ์
๋ฅผ ์ด๋ฒคํธ ํจ์์ ๋๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํด์ค๋ค.
์ต๋ช
ํจ์
๋ฅผ ์ ๋ฌํ๋ ์ด์ ๋์?์ฝ๋ฐฑํจ์
๋ผ๊ณ ๋ถ๋ฅธ๋ค.๐์ฃผ์๐) ์ด๋ ์ฝ๋ฐฑํจ์
๋ฅผ ๋ฐ๋ก ์ ๋ฌํ์ง ์๊ณ ๋ถ๋ฆฌํ ๋ค ์ ๋ฌ ํ ๋
-ํจ์๋ฅผ ํธ์ถํ์ฌ ์ ๋ฌํ๋ฉดโ
-ํจ์์ ์โญ๊น์ง๋ง ๋ฃ์ด์ผํ๋ค.
-() ํธ์ถ ์ฐ์ฐ์์ ์๋ฏธ๋ ๋ณด์๋ง์ ์คํํ๋ผ๋ ๋ป์ด์ฌ์ ์ด๋ฒคํธ ๋ฐ์(EX>ํด๋ฆญํ๊ธฐ ์ )์ ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋๊ณ ๋๋๋ฒ๋ฆฐ๋ค.
-WHAT ISโ
์ด๋ฒคํธ
๋ผํ๋ฉฐ ๊ฐ๋ น 1>ํด๋ฆญํ๊ฑฐ๋ 2>๊ฐ์ ๋ฃ์ด์ ์ ์ถ์ ํ๊ฑฐ๋ 3>๋ง์ฐ์ค ์คํฌ๋กค์ ํ๋ ๋ฑ์ ๋ค์ํ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ๋ค.
์ด๋ฒคํธ
๋ ๋ฌด์ธ๊ฐ ์ผ์ด๋ฌ๋ค๋ ์ ํธ๋ก ํด๋ฆญ์ด๋ ์คํฌ๋กค ๋ฑ์ ์ด๋ฒคํธ ๋ฐ์ ์ ์คํ๋๋ ํจ์๋ฅผํธ๋ค๋ฌ(handler)
๋ผ๊ณ ๋ถ๋ฅธ๋ค.ํธ๋ค๋ฌ ํจ์
๋ ์ฌ์ฉ์์ ํ๋(์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋)์ ์ด๋ป๊ฒ ๋ฐ์ํ ์ง๋ฅผ JavaScript
์ฝ๋๋ก ๊ตฌํํ์ฌ ์์ฑํฉ๋๋ค.
<script> // ์ด๋ฒคํธ์ ํธ๋ค๋ฌ ๋ฌธ๋ฒ์ ์ผ๋ฐ์ ์ธ ํํ element.addEventListener(event, handler, [options]); </script>
element
๋ ์ ๊ทผํ ์์๋ฅผ ์๋ฏธํด ์๋ฅผ ๋ค์ด ์ด๋ค ๋ฒํผ์ด ํด๋ฆญ ์ ์ด๋ฅผ ํ๋์ ์ด๋ฒคํธ๋ก ์ง์ ํ๊ธธ ์ํ๋ฉด ๋ฒํผ์ด ์์์ ํด๋นํ๋ค.
ํด๋น ์์๋getElementsByClassName
,getElementbyId
,querySelector
๋ฑ์ ์ ๊ทผ์ ํจ์๋ก ์ ๊ทผํ ์ ์๋ค.addEventListener
๋ ํน๋ณํ ๋ฉ์๋๋ก ํธ๋ค๋ฌ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ฉ์๋๋ค.
๋ฉ์๋ ์ด๋ฆ์ฒ๋ผ ์ด๋ค ์ด๋ฒคํธ๊ฐ ์ผ์ด๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋๋ก ํ ์ ์๋ค.
<html> <body> <img id='appleImage' alt='์ฌ๊ณผ' src='apple.png'> <button class="mySelectedElement">๋ฉ์ง ๋ฒํผ</button> </body> <script> const selectElement = document.getElementsByClassName('mySelectedElement')[0]; const appleImg = documnet.getElementById('appleImage') const clickHandler =()=>{ console.log('clicked button') appleImg.style.display = 'none' } selectElement.addEventListener('click', clickHandler) </scrip> </html>
addEventListener
์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ๋ค์ด๊ฐevent
๊ฐ ๋ฐ๋ก ์ด๋ฒคํธ์ ํ์ ์ผ๋ก ์ฒซ ๋ฒ์งธ ์ธ์์ ์์น์ ๋ค์ด๊ฐ ์ ์๋ ์ด๋ฒคํธ ์ข ๋ฅ๋ ๋ค์ํ๋ค.
'click'
'keydown'
'input'
๋ฑ...- ์ด๋ฒคํธ ํ์ ์ ๋ฌธ์์ด๋ก ๋ฃ์ด์ค๋ค.
addEventListener
์ ๋๋ฒ์งธ ์ธ์๋กhandler
์ ํธ๋ค๋ฌ ํจ์๋ก ์ฆ, ๋ฏธ๋ฆฌ ์์ฑํด ๋ ์ด๋ฒคํธ ํจ์๊ฐ ๋ค์ด๊ฐ๋ค.addEventListener
์ ์ธ ๋ฒ์งธ ์ธ์๋ ์ ํ์ ์ผ๋ก ๋ค์ด๊ฐ๋ ์ธ์๋ก ํ์ํ ๋๋ง ๋ฃ์ด์ค๋ค.
-์ฐธ๊ณ ๐)
-๋ฆฌ์กํธ ๋ฌธ๋ฒ์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ํ๋ ํจ์๋ฅผ ์ด๋ ๊ฒ ๊ฐ๊ฒฐํ๊ฒ ์จ์ค๋น..!
<div onClick = {function(){}}/>
<script> ํ๊ทธ
๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ๋ฉ์ถ๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ์ ์คํํฉ๋๋ค.
<script> ํ๊ทธ
๋ ํด๋น ์คํฌ๋ฆฝํธ ์๋์ ์๋ DOM์ ์ ๊ทผํ ์ ์๋ค.- HTML์ด Parsing ์ค ์ฉ๋์ด ํฐ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋๋ฉด ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ์ฆ์ ํ์นญํ๊ณ ์คํํ๊ธฐ๊น์ง ์คํฌ๋ฆฝํธ ์๋์ ์๋ ๋ชจ๋ ์์๋ค์ Parsing์ ํ์ง ๋ชปํ๊ฒ ๋์ด ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํ์๋๋ ๊ฒ์ด ์ง์ฐ๋๊ฒ ๋๋ค.
<script> ํ๊ทธ
๋ฅผ ๋ซ๋<body> ํ๊ทธ
์ง์ ์ ์์นํค๋ฉด ๋๋ค.
- HTML์ JavaScript๋ฅผ ์ ์ฉํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋ค.
- JavaScript์์ DOM์ ์ ๊ทผํด HTML ์์๋ฅผ ์์ฑํ๊ณ ์ญ์ ํ๊ฑฐ๋ ์คํ์ผ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ๋ค์ํ ์ด๋ฒคํธ์ ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ณ ํด๋ฆญ๊ณผ ๊ฐ์ด ์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณธ๋ค.
addEventListener
ํจ์๋ฅผ ์ฌ์ฉํด ์ด๋ฒคํธ๋ฅผ ์์ฑํ์ฌ ์ ์ ์ธ ์นํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ณํ์ํฌ ์ ์๋ค.
- WeCode ๊ดํฌ ๋ฉํ ๋์ ๊ฐ์ ์ค :]