- Document Object Model.
- html๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์์ฐํ ๋ค๋ฅธ ์ธ์ด์ธ๋ฐ ์ด๋ป๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ html์ ์กฐ์ํ ์ ์์๊น?
- ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ HTML ์กฐ์์ ํ๊ธฐ ์ํด์ HTML์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํด์ํ ์ ์๋ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํด๋๋ฉด ๋ฉ๋๋ค.
- ๊ทธ๋์ ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ๋ HTML ํ์ด์ง๋ฅผ ์ด์ด์ค ๋
- HTML์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฝ๊ฒ ์ฐพ๊ณ ๋ฐ๊พธ๊ธฐ ์ํด object์ ๋น์ทํ ์๋ฃํ์ ๋ด์์ค๋๋ค.
- ๊ตฌ์ฒด์ ์ผ๋ก๋ var document = { } ์ด๋ฐ ๋ณ์๋ฅผ ํ๋ ๋ง๋ค์ด์ ๊ฑฐ๊ธฐ ๋ฃ์ด์ค๋๋ค.
var document = {
div1 : {
style : {color : 'red'}
innerHTML : '์๋ ํ์ธ์'
}
}- ์ด์ document.div1.innerHTML = '์๋ ' ์ด๋ ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ฉด HTML ์กฐ์์ด ๊ฐ๋ฅ
- $(document).ready(function(){ ์คํํ ์ฝ๋ })
document.addEventListener('DOMContentLoaded', function() { ์คํํ ์ฝ๋ })- ์ด ์ด๋ฒคํธ๋ฆฌ์ค๋๋ค์ "HTML์ ๋ค ์ฝ์ด๋ค์๋์ง"๋ฅผ ์๋ ค์ฃผ๋ ์ด๋ฒคํธ๋ฆฌ์ค๋์ ๋๋ค.
- const title = document.getElementById("title")
- title.innerText = "got you!"
- html์์ ํด๋นํ๋ ํ๊ทธ์ ๋ชจ๋ ๋ด์ฉ์ arrayํ์์ผ๋ก ๊ฐ์ง๊ณ ์ค๊ธฐ ๋๋ฌธ์ ์ํ๋ ํ๋์ ํ๊ทธ๋ง ๊ฐ์ง๊ณ ์ค์ง ๋ชปํจ.
- class์ด๋ฆ์ผ๋ก ์ฐพ์ ๋ const title = document.querySelector(".hello h1");
- id์ด๋ฆ์ผ๋ก ์ฐพ์ ๋ const title = document.querySelector("#id h1");
- querySelectorAll('.ํด๋์ค๋ช ')[0] : ํด๋์ค๋ช ์ค ์ฒซ๋ฒ์งธ ํด๋์ค๋ช ์ ํ!
- html์ element๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ์์ console.dir๋ก ์ฐ์ด๋ณด๋ฉด object ํ์์ผ๋ก ์ถ๋ ฅ๋๋๋ฐ
๊ทธ ์ค on์ผ๋ก ์์ํ๋ ๊ฒ๋ค์ด event์.- ๋, element object ์์ style์ด ์๋ ๊ฒ๋ ๋ณผ ์ ์๋๋ฐ ์ด๋ฅผ ํตํด ์ ์ ์๋๊ฑด ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ html์์๋ค์ style๋ ๋ณ๊ฒฝํ ์ ์์!
์์)title.style.color = "blue"
- ์ฌ๊ธฐ์ click์ ์ด๋ฒคํธ ์ข ๋ฅ๋ฅผ ๋งํ๊ณ (on์ ๋นผ๊ณ ์ ๋ ฅํด์ผ ํจ.)
- handleTitleClick์ ์ด๋ฒคํธ๊ฐ ์คํ๋ฌ์ ๋ ์คํํ ํจ์!
- ํจ์ ์คํ๋ฒํผ์ ํจ์์ด๋ฆ ๋ค์ ()์ธ๋ฐ ์ ()๋ ์๋ตํ๋์ง? ์ฌ๊ธฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ง์ ์คํํ๋๊ฒ ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๋์ผ๋ก ์คํ๋ฒํผ์ ๋๋ฌ์ฃผ๊ธฐ ๋๋ฌธ
- 2๋ฒ์งธ ์ธ์์ ๋ค์ด๊ฐ๋ ํจ์๋ฅผ ์ฝ๋ฐฑํจ์๋ผ๊ณ ๋ถ๋ฆ!!!!
- ๋ฌด์ธ๊ฐ ์์ฐจ์ ์ผ๋ก ์์ ํ๊ณ ์ถ์ ๋ ์ฝ๋ฐฑํจ์๋ฅผ ์๊ตฌํจ. ๊ผญ ์ด๋ฒคํธ๋ฆฌ์ค๋์์๋ง ์ฐ์ด๋ ๊ฐ๋ ์ด ์๋๋ ์ฝ๋ฐฑํจ์๋ ์ฉ์ด๋ ๊ธฐ์ตํฉ์๋ค.
์ด ์ค ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ ์ด์ ๋ ๋์ค์ removeEventListener๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ์ ๊ฑฐํ ์ ๋ ์๊ธฐ ๋๋ฌธ์.
- ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ฐ๊ธฐ ์ ๊น์ง html ํ๊ทธ์ on์ด ๋ถ์ ์ด๋ฒคํธ๋ฅผ ์ง์ ์ ๋ ฅํด์คฌ์.
์์)<button>๋ฒํผ1</button>
- ์๋ง์ ์ด๋ฒคํธ ์ข ๋ฅ๊ฐ ์์ง๋ง ๊ทธ ์ค์์ ๋ช๊ฐ์ง๋ง ๋ณด๋ฉด
- onmouseenter : ๋ง์ฐ์ค๊ฐ ํด๋น ํ๊ทธ์ ์์นํด ์์ ๋ ์คํ
- onmouseleave : ๋ง์ฐ์ค๊ฐ ํด๋น ํ๊ทธ์์ ๋ฒ์ด๋ฌ์ ๋ ์คํ
- onmousedown : ๋ง์ฐ์ค๋ก ๋๋ ์ ๋ ๋ฐ์.
- onmouseup : ๋ง์ฐ์ค๋ฅผ ๋์ ๋ ๋ฐ์.
- onmousemove : ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋ ์ด๋ฒคํธ ๋ฐ์.
- onclick : ํด๋น ํ๊ทธ๊ฐ ํด๋ฆญ ๋์์ ๋ ์ด๋ฒคํธ ๋ฐ์
- oncopy : ๋ฌด์ธ๊ฐ copy ํ์ ๋ ์ด๋ฒคํธ ๋ฐ์
- onkeydown : ๋ฌด์จ ์ด๋ฒคํธ์ธ์ง ์ฐพ์๋ณด์๊ธธ...
- onmouseover : ๋ฌด์จ ์ด๋ฒคํธ์ธ์ง ์ฐพ์๋ณด์๊ธธ...
- onscroll : ๋ฌด์จ ์ด๋ฒคํธ์ธ์ง ์ฐพ์๋ณด์๊ธธ...
- ์ ๋ ํฐ๋ก์ฐพ์์ด๋ฏธ์ง.addEventListener('load', function(){
//์ด๋ฏธ์ง ๋ก๋๋๋ฉด ์คํํ ์ฝ๋
})- ๊ทผ๋ฐ ์ธ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ ๊ฑธ ์ ์ด๋์ผ๋ฉด
- ๊ทธ js ํ์ผ๋ณด๋ค ์ด๋ฏธ์ง๊ฐ ๋ ๋จผ์ ๋ก๋๋๋ ๊ฒฝ์ฐ๋ ์์ผ๋ ์ด๋ฒคํธ ๋ฐ์์ฒดํฌ๋ฅผ ๋ชปํ ์๋ ์๊ฒ ๊ตฐ์
- ๊ทธ๋ฌ๋ฉด window๋ฅผ ๋ถ์ฌ๋ ๋จ. document ์ ํฌํจ๋ ์ด๋ฏธ์ง, css ํ์ผ ๋ฑ ๋ชจ๋ ๊ฒ์ด ๋ก๋๊ฐ ๋์๋์ง ์ฒดํฌํด์ค.
- window.addEventListener('load', function(){
//document ์์ ์ด๋ฏธ์ง, js ํ์ผ ํฌํจ ์ ๋ถ ๋ก๋๊ฐ ๋์์ ๊ฒฝ์ฐ ์คํํ ์ฝ๋
})
- ready ์ด๋ฐ๊ฑฐ๋ ์ฐจ์ด๋ ์์ .ready()๋ DOM ์์ฑ๋ง ์ฒดํฌํ๋ ํจ์์ธ๋ฐ,
์ด๊ฒ๋ณด๋ค ์ฝ๊ฐ ๋ ๋์๊ฐ์ ๋ชจ๋ ํ์ผ๊ณผ ์ด๋ฏธ์ง์ ๋ก๋์ํ๋ฅผ ์ฒดํฌํ๋ค๊ณ ๋ณด์๋ฉด ๋๊ฒ ์ต๋๋ค.
- input : inputํ๊ทธ์ ์ ๋ ฅํ ๊ฐ์ด ๋ณํ ๋ ์คํ๋จ.
- change : inputํ๊ทธ์ ์ ๋ ฅํ ๊ฐ์ด ๋ณํ ๋ ์คํ๋๋ ๊ฐ์ ์ ๋ ฅํ๊ณ ์ปค์๋ฅผ ๋ค๋ฅธ ๊ณณ์ ์ฐ์ ๋ ๋ฐ์ํจ.(ํฌ์ปค์ค๋ฅผ ์์ ๋)
e๋ฅผ ๋ฃ์ผ๋ฉด ์๋ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์.
- e.target : ์ ์ ๊ฐ ์ค์ ๋ก ๋๋ฅธ html ์์
- e.currentTarget : ์ด๋ฒคํธ๋ฆฌ์ค๋๊ฐ ๋ฌ๋ฆฐ ๊ณณ
- e.preventDefault() : ์ด๋ฒคํธ ๊ธฐ๋ณธ๋์์ ๋ง์์ค.
- e.stopPropagation() : ๋ด ์์์์๋ก ํผ์ง๋ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ ๋ง์์ค!!!
document.querySelector('.black-bg').addEventListener('click', function(e){
const black_bg = document.querySelector('.black-bg')
if(e.target==black_bg){
document.querySelector('.black-bg').classList.remove('show-modal')
}
})
- ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ ์ ๊ฐ ์ค์ ๋ก ๋๋ฅธ ๊ณณ์ด
e.target๊ณผ ๊ฐ๋ค๋ฉด show-modal์ด๋ผ๋ ํด๋์ค๋ฅผ ์ ๊ฑฐ.
- element.classList.contains() : html element์ class๊ฐ ํฌํจ๋์ด ์๋์ง
- element.classList.remove() : html element์ class ์ ๊ฑฐ
- element.classList.add() : html element์ class ์ถ๊ฐ
- element.classList.toggle(class๋ช ) : toggle ํจ์๋ class๋ช ์ด ์กด์ฌํ๋์ง ํ์ธํ๊ณ ์กด์ฌํ๋ค๋ฉด ํด๋น class๋ช ์ ์ ๊ฑฐํ๊ณ ๋ง์ฝ ์กด์ฌํ์ง ์๋๋ค๋ฉด ์ถ๊ฐํ๋ ๊ธฐ๋ฅ!
- ๐ฅ์ฃผ์์ฌํญ! ์ค์นํ ๊ณณ ํ๋จ์์ jquery ๋ฌธ๋ฒ ์ฌ์ฉ ๊ฐ๋ฅ.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
- querySelector โ $
- $๋ querySelectorAll๊ณผ๋ ๋น์ท
- addEventListener โ on
- innerHTML โ html
- style โ css
<script> document.querySelector('.hello').innerHTML = '๋ฐ๋ณด' โ $('.hello').html('๋ฐ๋ณด');
- $('.hello').css('color','red');
- $('.hello').addClass('show')
// ์ ๊ฑฐ๋ .removeClass(), ํ ๊ธ์ .toggleClass()
- document.querySelector('#test-btn').addEventListener('click', function(){})
$('#test-btn').on('click',function(){})
- $('์ ๋ ํฐ')๋ก ์ฐพ์ผ๋ฉด jqueryํจ์๋ง ๋ถ์ผ ์ ์์.
๋ฐ๋๋ก querySelector('์ ๋ญํฐ')๋ก ์ฐพ์ผ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๋ง ๋ถ์ผ ์ ์์.
<div class="black-bg">
<div class="white-bg">
<h4>๋ก๊ทธ์ธํ์ธ์</h4>
<button class="btn btn-danger" id="close">๋ซ๊ธฐ</button>
</div>
</div>
<button class="loginBtn">๋ก๊ทธ์ธ</button>
<script>
document.querySelector('.loginBtn').addEventListener('click', function(){
document.querySelector('.black-bg').classList.add('show-modal')
})
$('.btn-danger').on('click', function(){
$('.black-bg').removeClass('show-modal')
})
- loginBtn์ด๋ผ๋ ํด๋์ค๋ฅผ ๊ฐ์ง ๋ฒํผ์ ์ ํํด์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ค.
- ํด๋ฆญํ๋ฉด black-bg๋ผ๋ div์ show-modal์ด๋ผ๋ ํด๋์ค๊ฐ ์ถ๊ฐ๋์ ๋ชจ๋ฌ์ฐฝ์ด ๋์์ง.
- btn-danger ์ด๋ผ๋ ํด๋์ค๋ฅผ ๊ฐ์ง ๋ซ๊ธฐ ๋ฒํผ์ ์ ํํด์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ค.
- ํด๋ฆญํ๋ฉด black-bg๋ผ๋ div์ show-modal์ด๋ผ๋ ํด๋์ค๊ฐ ์ ๊ฑฐ๋์ ๋ชจ๋ฌ์ฐฝ์ด ์ฌ๋ผ์ง.