[JS] DOM
Categories: javascript
Tags: js, ๊ฐ๋ ์ ๋ฆฌ
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
DOM : HTML ์์๋ฅผ Object(JavaScript Object)์ฒ๋ผ ์กฐ์(Manipulation)ํ ์ ์๋ Model
DOM ๊ธฐ์ด
JavaScript๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉด, DOM์ผ๋ก HTML์ ์กฐ์ํ ์ ์์
- HTML์ JavaScript ์ ์ฉ
- HTML์ JavaScript๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์๋
<script>
ํ๊ทธ๋ฅผ ์ด์ฉ -
์๋์ ๊ฒฝ์ฐ HTML ํ์ผ๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๋
myScriptFile.js
์ ๋ถ๋ฌ์ต๋๋ค.1
<script src="myScriptFile.js"></script>
- ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฑ๋ ์ฝ๋๋ฅผ ํด์ํ๋ ๊ณผ์ ์์
<script>
์์๋ฅผ ๋ง๋๋ฉด, ์น ๋ธ๋ผ์ฐ์ ๋ HTML ํด์์ ์ ์ ๋ฉ์ถค. - HTML ํด์์ ์ ์ ๋ฉ์ถ ์น ๋ธ๋ผ์ฐ์ ๋
<script>
์์๋ฅผ ๋จผ์ ์คํ -
<script>
์์๋ ๋ฑ์ฅ๊ณผ ํจ๊ป ์คํ๋๋ค๋ ์ฌ์ค์ ๊ผญ ๊ธฐ์ต
- HTML์ JavaScript๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์๋
-
script ์ฝ์ ์์น
<script>
์์๋ฅผ ์ถ๊ฐํ๋ ๋ ๊ฐ์ง ๋ํ์ ์ธ ์ฌ๋ก-
์์ชฝ์ ์ถ๊ฐ
- head ํ๊ทธ์ script ํ๊ทธ๊ฐ ๋ค์ด๊ฐ ๊ฒฝ์ฐ, HTML ํ์ฑ์ด ์๋ฃ๋๊ธฐ ์ ์ scipt ํ๊ทธ๋ฅผ ์คํ. ๋ฐ
- ๋ฐ๋ผ์ DOM ์์๋ฅผ ์กฐ์ํด์ผ ํ๋ค๋ฉด, ํด๋น ์์ ์์ ์กด์ฌํ์ง ์๋ DOM ์์์ ์ ๊ทผํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
- ํ๊ทธ๊ฐ ํ์ฑ๋๊ธฐ ์ ์ด๊ธฐ์ js ํ์ผ์ด null์ ๊ฐ์ง๊ณ ์์ ํ๋ค
$(document).ready(function(){ ... })
: ์ด ์ฝ๋๋ ๋ฌธ์๊ฐ ์์ ํ ๋ก๋๋๊ณ ์ค๋น๋ ํ์ ๋ด๋ถ์ ํจ์๋ฅผ ์คํํ๋ผ๋ ์๋ฏธ์ ๋๋ค. ์ด๋ฅผ ํตํด, ๋ชจ๋ HTML ์์๋ค์ด ๋ก๋๋ ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. = ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํจ.
- </body>๊ฐ ๋๋๊ธฐ ์ ์ ์ถ๊ฐ
- ์ด์ ๋ฐ๋ผ์ ๋ณดํต ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ body ํ๊ทธ ๋งจ ํ๋จ์ ์์ฑ
- ์ด๋ HTML ํ์ฑ์ ๋ชจ๋ ๋ง์น ํ์ script ํ๊ทธ๋ฅผ ์ฝ๊ธฐ ๋๋ฌธ์,
- ์ด๋ฏธ DOM ๊ฐ์ฒด๋ค๋ ๋ชจ๋ ์์ฑ๋์ด ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ฌธ์ ์์ด ์คํ์ํฌ ์ ์๋ค.
- ๋ฐ๋ผ์ DOM ์์์ ์ ๊ทผํด์ผ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๊ฒฝ์ฐ, <body> ํ๊ทธ์ ๋
- ์ด์ ์๊ด์์ด ๋น ๋ฅด๊ฒ ์คํํ๋ ค๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ด๋ผ๋ฉด <head> ํ๊ทธ์ ๋๋ ๊ฒ์ด ์ข๋ค.
- ๋ ๋ฐฉ์์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์
-
๋ ๋ฐฉ์ ๋ชจ๋ myScriptFile.js ๋ด์ ์ฒซ ๋ฒ์งธ console.log๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ถ๋ ฅํ์ง๋ง, ๋ ๋ฒ์งธ console.log์ ๊ฒฝ์ฐ ์ ๋๋ก ์ถ๋ ฅํ์ง ๋ชปํ๋ ์์๊ฐ ์์ต๋๋ค.
1 2 3 4
console.log('welcome JavaScript'); let msgElement = document.querySelector('#msg'); console.log(msgElement);
- ์ ์ถ๊ฐ์ null์ด ์ฝ์์ ์ถ๋ ฅ๋จ.
-
async์ defer๋ HTML5์ ์ถ๊ฐ๋
์ด๋ค์ HTML ํ์ฑ๊ณผ ์คํฌ๋ฆฝํธ ๋ค์ด๋ก๋๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์งํ
- async
- script ํ๊ทธ๋ฅผ ๋ค์ด๋ฐ๊ณ ์คํํ๋ ๊ณผ์ ์์ HTML ํ์ฑ์ด ๋ฉ์ถ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
- defer
- script ํ๊ทธ๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๋,ย defer ์์ฑ์ ์์์ ๋ถํฐ ์์๋๋ก ์คํํ๊ฒ ํ๋ค.
- async ์์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก HTML ํ์ฑ์ ์ค๋จ์ํค์ง๋ ์์ง๋ง, ํ์ฑ์ด ๋ชจ๋ ์ข ๋ฃ๋ ํ ์คํํ๋๋ก ํ๋ค.
- ์ด์ ๋ฐ๋ผ ์ํ๋ ๋ฐฉํฅ๋๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋ ๊ฒ์ด๋ค.
ํด์ฆ.
id์ ์ด๋ฆ์ด nav์ธ div ์๋ฆฌ๋จผํธ๋ฅผ ํฌํจํด์, ๋ชจ๋ ์์ ์๋ฆฌ๋จผํธ์ class ์ด๋ฆ์ console.log๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์์ฌ ์ฝ๋(pseudocode)๋ก ์์ฑํ์ธ์.
-
์์ชฝ์ ์ถ๊ฐ
DOM ๋ค๋ฃจ๊ธฐ
JS์ JQuery ๋๊ฐ์ง ์๋๋ฐ JQuery๋ react๋ฑ๋ฑ ์ฌ์ฉํ์ง ๋ชปํ๋ ๊ณณ ์ด ๋ง์.
JS
์์ ์์ฝ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//div ์์ ์์ฑ ๋ฐ ๋ด์ฉ์์ฑ - ์์ง html๋ด์ ๋ณด์ด์ง์๋ ์ํ
const tweetDiv = document.createElement('div');
tweetDiv.textContent = 'hi jerry';
//์ถ๊ฐํ ํด๋์ค ์กฐํ
const findDiv = document.querySelector('.tweet');
// ํด๋์ค์ ์์์์๋ก ์ถ๊ฐ - html์ tweetํด๋์ค์ ์ฒซ๋ฒ์งธ์์์ ์์์ ์ถ๊ฐ๋ ๊ฒ์ด ๋ณด์
findDiv.append(tweetDiv);
// ์์์ ํด๋์ค ์ถ๊ฐ
tweetDiv.classList.add('abc');
// ์ด๋ฏธ์๋ ํด๋์ค์ ์๋ก์ด ํด๋์ค ์ถ๊ฐ
findDiv.classList.add('tweeta');
//remove
//1. ์๊ณ ์๋ ์์๋ง ์ญ์
tweetDiv.remove();
//2. ํด๋น ํด๋์ค๋ง ์ญ์
const tweets = document.querySelectorAll('.tweet')
tweets.forEach(function(tweet){
tweet.remove();
})
//removeChild
//1. TweetList๋ง ๋จ๊ธฐ๊ณ ์ญ์
const container = document.querySelector('#container');
while (container.children.length > 1) {
container.removeChild(container.lastChild);
}
//2. container ๋ด ๋ชจ๋ ์ญ์
const container = document.querySelector('#container');
while (container.firstChild) {
container.removeChild(container.firstChild);
}
remove -1
removeChild-1
remove -2
removeChild-2
์์ฝ
-
Create
1 2
const tweetDiv = document.createElement('div'); tweetDiv.textContent = 'hi jerry';
-
read
1
const findDiv = document.querySelector('.tweet');
-
Append
1
findDiv.append(tweetDiv);
-
update
1 2
tweetDiv.classList.add('abc'); findDiv.classList.add('tweeta');
-
Delete
-
remove() : ์ญ์ ํ๋ ค๋ ์์์ ์์น๋ฅผ ์๊ณ ์๋ ๊ฒฝ์ฐ
1
tweetDiv.remove();
-
innerHTML - ๋ณด์์ ๊ถ์ฅ์ํจ.
- removeChild
-
container ๋ด ๋ชจ๋ ์ญ์
1 2 3 4
const container = document.querySelector('#container'); while (container.firstChild) { container.removeChild(container.firstChild); }
b. TweetList๋ง ๋จ๊ธฐ๊ณ ์ญ์
1 2 3 4
const container = document.querySelector('#container'); while (container.children.length > 1) { container.removeChild(container.lastChild); }
-
-
ํด๋น ํด๋์ค๋ง ์ญ์
1 2 3 4 5 6 7 8
const tweets = document.querySelectorAll('.tweet') tweets.forEach(function(tweet){ tweet.remove(); }) // or for (let tweet of tweets){ tweet.remove() }
-
Create
- document ๊ฐ์ฒด์ createElement ๋ฉ์๋
-
์์ 1. ์๋ก์ด<div>์์ ๋ง๋ค๊ธฐ
1
document.createElement('div')
-
๋ณ์์ ํ ๋น
1
const tweetDiv = document.createElement('div')
-
์คํ๊ฒฐ๊ณผ
-
- but, html์๋ ๋ํ๋์ง ์์.
tweetDiv
๋ผ๋ ์์๋ ํ์ฌ ๊ณต์ค๋ถ์ ์ค
- ๋ง๋ ์๊ฐ ๋ณ์์๋ง ๋ด๊ฒจ์ ธ ์๊ณ DOM์๋ ์ ์ฌ๋ผ๊ฐ ์์
-
- ์ดํ Append๋ฅผ ํตํด ํธ๋ฆฌ๊ตฌ์กฐ์ ์ฐ๊ฒฐํ ์ ์์
Append
- CREATE์์ ๋ง๋
tweetDiv
๋ผ๋ ๋ณ์๋ ์์ง โ๊ณต์ค๋ถ์โ์ ํ๊ณ ์์ต๋๋ค. - Append Method๋ฅผ ์ฌ์ฉํด ํธ๋ฆฌ๊ตฌ์กฐ์ ์ฐ๊ฒฐ
-
๋ณ์ tweetDiv์ ๋ด๊ธด ์๋ก์ด <div> ์์๋ฅผ <body> ์์์ append
1
document.body.append(tweetDiv);
-
์คํ ๊ฒฐ๊ณผ
- ๊ฐ๋ฐ์ ๋๊ตฌ Elements ํญ์์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ธํ ์ ์์ต๋๋ค.
-
Read
DOM์ ์ด์ฉํ์ฌ HTML Element๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ
querySelector
์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ํ์(selector)๋ฅผ ์ ๋ฌํ์ฌ ํ์ธ- ์ ํ์๋ก๋ HTML ์์(
"div"
), id, class ์ธ ๊ฐ์ง๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ - query ์กฐํํ๋ค. querySelector๋ ์ ํ์๋ฅผ ์กฐํํ๋ค๋ ์๋ฏธ
- ์ ํ์๋ก๋ HTML ์์(
- querySelector
-
์์ - ํด๋์ค ์ด๋ฆ์ด
tweet
์ธ HTML ์๋ฆฌ๋จผํธ ์ค ์ฒซ ๋ฒ์งธ ์๋ฆฌ๋จผํธ๋ฅผ ์กฐํ1
const oneTweet = document.querySelector('.tweet')
-
๊ฒฐ๊ณผ
-
HTML ๋ฌธ์์๋ ํด๋์ค ์ด๋ฆ์ด tweet ์ธ ์์๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ ๋ฐ, ๋ณ์
oneTweet
์ ํ ๋น๋ ์์๋ ๋จ ํ๋
-
-
- querySelectorAll
-
์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋,
querySelectorAll
์ ์ฌ์ฉ1
const tweets = document.querySelectorAll('.tweet');
- ์กฐํํ HTML ์์๋ค์ ๋ฐฐ์ด์ฒ๋ผ for๋ฌธ์ ์ฌ์ฉํ ์ ์์(iterator ์์ฑ์ ๊ฐ์ง๊ณ ์์ด์) โ but ๋ฐฐ์ด์ ์๋๊ณ ์ ์ฌ๋ฐฐ์ด : Array-like Object
- ์ iv์ ์ค๋ช
์์
-
์ ์ฌ๋ฐฐ์ด
-
๋ฐ๋ณต๋ฌธ.
1
for(let i =0; i<tweets.length; i++){console.log(tweets[i])};
-
-
-
์ฐธ๊ณ : getElementById()
1 2 3
const getOneTweet = document.getElementById('container') const queryOneTweet = document.querySelector('#container') console.log(getOneTweet === queryOneTweet) // true
- getElementById์ querySelector๋ก ๊ฐ๊ฐ ๋ฐ์ ์จ container ์์๋ ํ๋์ ์์
- getElementById :
querySelector
์ ๋น์ทํ ์ญํ ์ ํ๋ ์ค๋๋ ๋ฐฉ์-๋ ๊ฑฐ์ - ๋ง์ฝ ์ด์ ๋ฒ์ ์ ๋ธ๋ผ์ฐ์ (์ธํฐ๋ท ์ต์คํ๋ก๋ฌ) ํธํ์ฑ์ ์ ๊ฒฝ ์จ์ผ ํ๋ค๋ฉด, ์ด๋ฐ ์๋ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํ ์๋ ์์. ์ค์ ๋์์ ๋์ผํ๋ ์ด๋ฐ ๋ฉ์๋๊ฐ ์๋ค๋ ๊ฒ ์ ๋๋ ์์๋๊ธฐ
- getElementById :
- getElementById์ querySelector๋ก ๊ฐ๊ฐ ๋ฐ์ ์จ container ์์๋ ํ๋์ ์์
- querySelector๋ฅผ ํ์ฉํ์ฌ ์์ ์ถ๊ฐ
-
tweetDiv๋ฅผ container์ ๋ง์ง๋ง ์์ ์์๋ก ์ถ๊ฐ
1 2 3
const queryOneTweet = document.querySelector('#container') container.append(tweetDiv); // === queryOneTweet.append(tweetDiv);
-
tweetDiv ์์ฑ (Create) : const tweetDiv = document.createElement(โdivโ);
-
const queryOneTweet = document.querySelector(โ#containerโ), container.append(tweetDiv);
-
-
update
- classList.add
-
Read 5๋ฒ์์ ์ถ๊ฐํ tweetDiv
1 2 3
const tweetDiv = document.createElement('div'); const queryOneTweet = document.querySelector('#container'); container.append(tweetDiv);
-
tweetDiv.classList.add(โtweetaโ)
-
querySelector๋ก ์ถ๊ฐํ tweeta ํด๋์ค๋ฅผ ์กฐํํ ์ ์๊ฒ ํจ.
-
tweeta ํด๋์ค์ tweet ํด๋์ค๊น์ง ์ถ๊ฐ
-
-
Delete
- ์์์ ์์น๋ฅผ ์๊ณ ์๋ ๊ฒฝ์ฐ
-
id๊ฐ container์ธ ์์ ์๋์ tweetDiv๋ฅผ ์ถ๊ฐํ๊ณ , remove๋ก ์ญ์
1 2 3 4
const container = document.querySelector('#container') const oneDiv = document.createElement('div') container.append(oneDiv) oneDiv.remove() // ์ด๋ ๊ฒ append ํ๋ ์์๋ฅผ ์ญ์ ํ ์ ์๋ค.
-
- ์ฌ๋ฌ๊ฐ์ ์์ ์์๋ฅผ ์ญ์ - innerHTML , removeChild
-
innerHTML
์์ฃผ ๊ฐ๋จํ๊ฒ ๋ชจ๋ ์์ ์์๋ฅผ ์ง์ธ ์ ์์
1
document.querySelector('#container').innerHTML = '';
But, innerHTML์ ๋ณด์์์ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์์.
- removeChild
- ๋ชจ๋ ์์ ์์๋ฅผ ์ญ์ ํ๊ธฐ ์ํด, ๋ฐ๋ณต๋ฌธ(while, for, etc.)์ ํ์ฉ
-
๋ชจ๋ ์์์์ ์ญ์
: removeChild
์while
์ ์ด์ฉํด ์์ ์์๋ฅผ ์ญ์ 1 2 3 4
const container = document.querySelector('#container'); while (container.firstChild) { container.removeChild(container.firstChild); }
- ์์ ์์๊ฐ ๋จ์์์ง ์์ ๋๊น์ง, ์ฒซ ๋ฒ์งธ ์์ ์์๋ฅผ ์ญ์
-
์ ๋ชฉ์ ํด๋นํ๋ H2 โTweet Listโ๊น์ง ์ญ์ ๋จ
-
H2 โTweet Listโ๋ง ๋จ๊ธฐ๊ณ ์ญ์
1 2 3 4
const container = document.querySelector('#container'); while (container.children.length > 1) { container.removeChild(container.lastChild); }
-
- ๋ชจ๋ ์์ ์์๋ฅผ ์ญ์ ํ๊ธฐ ์ํด, ๋ฐ๋ณต๋ฌธ(while, for, etc.)์ ํ์ฉ
-
ํด๋์ค ์ด๋ฆ์ด tweet์ธ ์์๋ง ์ฐพ์์ ์ ๊ฑฐ
1 2 3 4 5 6 7 8
const tweets = document.querySelectorAll('.tweet') tweets.forEach(function(tweet){ tweet.remove(); }) // or for (let tweet of tweets){ tweet.remove() }
-
JQuery
- Create
- JavaScript์
document.createElement
์ ํด๋นํ๋ jQuery ์ฝ๋๋$('<ํ๊ทธ๋ช >')
1 2 3 4 5 6 7 8 9
$('<div>') //๋ณ์์ ํ ๋น const tweetDiv = $('<div>') const $oneDiv = $('<div></div>'); //textContent๋ฅผ ์ฌ์ฉํด ๋ฌธ์์ด ์ ๋ ฅ $oneDiv.text('dev'); console.log($oneDiv); // <div>dev</div>
- JavaScript์
-
Append
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
//์์๋ฅผ body์ ์ถ๊ฐ $('body').append(tweetDiv); //๋ด์ฉ ์ถ๊ฐ tweetDiv.text('์๋ก์ด ํธ์ ๋ด์ฉ'); //html ๋ด์ฉ ์ถ๊ฐ tweetDiv.html('<strong>์๋ก์ด ํธ์ ๋ด์ฉ</strong>'); //์์๋ฅผ ํน์ ์ปจํ ์ด๋์ ์ถ๊ฐ $('#container').append(tweetDiv); // ๋ชจ๋ ์์๋ฅผ ํ ์ค๋ก (html ์ ์ธ) $('<div></div>').text('์๋ก์ด ํธ์ ๋ด์ฉ').appendTo('body'); //class ์ถ๊ฐ $oneDiv.addClass('tweet'); console.log($oneDiv); // <div class="tweet">dev</div> //#container์ oneDiv๋ฅผ ์ถ๊ฐ $('#container').append($oneDiv); // ์ฝ์์ $oneDiv์ HTML ์ฝ๋ ์ถ๋ ฅํ์ฌ ํ์ธ console.log($oneDiv.prop('outerHTML'));
class
์id
์ธ์ ๋ค๋ฅธ ์์ฑ์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด,.attr()
๋ฉ์๋๋ฅผ ์ฌ์ฉoneDiv.attr('data-custom', 'value')
์ ๊ฐ์ด ์ฌ์ฉํ์ฌdata-custom
์์ฑ์ ์ถ๊ฐ
-
Select
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
//ํด๋์ค ์ด๋ฆ์ด tweet์ธ ์์ ์ค ์ฒซ๋ฒ์งธ ์์ ์กฐํ const oneTweet = $('.tweet').first(); //ํด๋์ค ์ด๋ฆ์ด tweet์ธ ๋ชจ๋ ์์ ์กฐํ const tweets = $('.tweet'); //**.each()** ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๊ฐ ์์์ ๋ํด ๋ฐ๋ณต ์์ ์ ์ํํ ์ ์์ tweets.each(function(index, element) { console.log(index); console.log(element); }); //์์์ ํด๋์ค ์ถ๊ฐํ๊ณ ๋ถ๋ชจ ์์์ ์ถ๊ฐํ๊ธฐ $('<div></div>') // ์๋ก์ด div ์์ ์์ฑ .addClass('tweet') // tweet ํด๋์ค ์ถ๊ฐ .appendTo('#container'); // #container ์์์ ๋ง์ง๋ง ์์์ผ๋ก ์ถ๊ฐ
-
Delete
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
//tweetDiv ์ถ๊ฐ ํ ์ญ์ ํ๊ธฐ $('#container').append('<div id="tweetDiv"></div>'); $('#tweetDiv').remove(); //#container ์๋ ๋ชจ๋ ์์ ์ญ์ ํ๊ธฐ $('#container').empty(); //๋ชจ๋ ์์ ์์ ์ญ์ ํ๊ธฐ (while ์ฌ์ฉ) const $container = $('#container'); while ($container.children().length > 1) { $container.children().first().remove(); } //#container์ ์์ ์์ ์ค ๋ง์ง๋ง ์์๋ง ๋จ๊ธฐ๊ธฐ const $container = $('#container'); while ($container.children().length > 1) { $container.children().first().remove(); } //ํด๋์ค ์ด๋ฆ์ด tweet์ธ ์์๋ง ์ฐพ์์ ์ ๊ฑฐํ๊ธฐ $('.tweet').remove();
์ด๋ฒคํธ๊ฐ์ฒด
์ด๋ฒคํธ ๊ฐ์ฒด๋ ์ฌ์ฉ์ ์
๋ ฅ(onclick
, onkeyup
, onscroll
๋ฑ)์ ํธ๋ฆฌ๊ฑฐ๋ก ๋ฐ์ํ ์ด๋ฒคํธ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด
JS
[keydown
๊ณผ keyup
](https://www.notion.so/JS-DOM-04fb95218a244052a4ecd3bbaad97e55?pvs=21) / mouseover
์ mouseout
/ load
์ด๋ฒคํธ / scroll
์ด๋ฒคํธ / ํด๋ฆญ ์ด๋ฒคํธ
dbclick
/ [mousenter](https://www.notion.so/JS-DOM-04fb95218a244052a4ecd3bbaad97e55?pvs=21)
/ [mouseleave](https://www.notion.so/JS-DOM-04fb95218a244052a4ecd3bbaad97e55?pvs=21)
[keypress](https://www.notion.so/JS-DOM-04fb95218a244052a4ecd3bbaad97e55?pvs=21)
/ focus
/ blur
resize
/ unload
/ contextmenu
JS
keydown
๊ณผkeyup
์ด๋ฒคํธ-
addEventListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<!DOCTYPE html> <html> <body> <p>ํค๋ณด๋๋ฅผ ๋๋ฅด๊ณ ๋์ผ๋ฉด ์๋ฆผ์ด ํ์๋ฉ๋๋ค.</p> <script> document.addEventListener("keydown", function(event) { console.log("ํค ๋ค์ด: " + event.key); }); document.addEventListener("keyup", function(event) { console.log("ํค ์ : " + event.key); }); </script> </body> </html>
-
on์ด๋ฒคํธํจ์
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<html> <body> <input type="text" id="keyInput"> <script> var input = document.getElementById("keyInput"); input.onKeydown = function() { console.log('ํค ๋ค์ด'); }; input.onkeyup = function() { console.log('ํค ์ '); }; </script> </body> </html>
-
mouseover
์mouseout
์ด๋ฒคํธ-
addEventListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<html> <body> <div id="hoverMe" style="width: 200px; height: 100px; background-color: yellow;"> ์ฌ๊ธฐ์ ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๋ค ๋์ธ์. </div> <script> var element = document.getElementById("hoverMe"); element.addEventListener("mouseover", function() { console.log('๋ง์ฐ์ค ์ค๋ฒ'); }); element.addEventListener("mouseout", function() { console.log('๋ง์ฐ์ค ์์'); }); </script> </body> </html>
-
on์ด๋ฒคํธํจ์
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
<!DOCTYPE html> <html> <body> <div id="hoverMe" style="width: 200px; height: 100px; background-color: yellow;"> ์ฌ๊ธฐ์ ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๋ค ๋์ธ์. </div> <script> var div = document.getElementById("hoverMe"); div.onmouseover = function() { console.log('๋ง์ฐ์ค ์ค๋ฒ'); }; div.onmouseout = function() { console.log('๋ง์ฐ์ค ์์'); }; </script> </body> </html>
-
load
์ด๋ฒคํธ-
addEventListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<!DOCTYPE html> <html> <body> <p>์ด ํ์ด์ง๊ฐ ๋ก๋๋๋ฉด ์ฝ์์ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.</p> <script> window.addEventListener("load", function() { console.log('ํ์ด์ง ๋ก๋ ์๋ฃ'); }); </script> </body> </html>
-
on์ด๋ฒคํธํจ์
1 2 3 4 5 6 7 8 9 10 11 12
<!DOCTYPE html> <html> <body> <script> window.onload = function() { console.log('ํ์ด์ง ๋ก๋๋จ'); }; </script> </body> </html>
-
scroll
์ด๋ฒคํธ-
addEventListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<!DOCTYPE html> <html> <body> <div style="height: 1000px"> ์ด ํ์ด์ง๋ฅผ ์คํฌ๋กคํ๋ฉด ์ฝ์์ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. </div> <script> window.addEventListener("scroll", function() { console.log('์คํฌ๋กค ๋ฐ์'); }); </script> </body> </html>
-
on์ด๋ฒคํธํจ์
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
<!DOCTYPE html> <html> <body> <div id="scrollable" style="width: 100%; height: 100px; overflow: auto;"> <div style="height: 500px;"> ์คํฌ๋กคํด ๋ณด์ธ์. </div> </div> <script> var scrollableDiv = document.getElementById("scrollable"); scrollableDiv.onscroll = function() { console.log('์คํฌ๋กค ๋ฐ์'); }; </script> </body> </html>
-
- ํด๋ฆญ ์ด๋ฒคํธ
-
addEventListener
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<!DOCTYPE html> <html> <body> <button id="clickMe">ํด๋ฆญํ์ธ์</button> <script> document.getElementById("clickMe").addEventListener("click", function() { alert('๋ฒํผ ํด๋ฆญ๋จ!'); }); </script> </body> </html>
-
on์ด๋ฒคํธํจ์
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<!DOCTYPE html> <html> <body> <button id="clickButton">ํด๋ฆญํ์ธ์</button> <script> var button = document.getElementById("clickButton"); button.onclick = function() { console.log('๋ฒํผ ํด๋ฆญ๋จ'); }; </script> </body> </html>
-
์ด์ธ JavaScript์์๋ ๋ค์ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋
๋ง์ฐ์ค ์ด๋ฒคํธ
-
dblclick
: ๋๋ธ ํด๋ฆญ ์ด๋ฒคํธ1 2 3 4
element.addEventListener('dblclick', function(event) { console.log('Element was double-clicked'); });
-
mouseenter
: ๋ง์ฐ์ค ์ปค์๊ฐ ์์์ ๋ค์ด๊ฐ ๋1 2 3 4
element.addEventListener('mouseenter', function(event) { console.log('Mouse entered the element'); });
-
mouseleave
: ๋ง์ฐ์ค ์ปค์๊ฐ ์์์์ ๋๊ฐ ๋1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ element.addEventListener('mouseleave', function(event) { console.log('Mouse left the element'); });
ํค๋ณด๋ ์ด๋ฒคํธ
-
keypress
: ํค๋ฅผ ๋๋ฅด๊ณ ์์ ๋ (deprecated,keydown
์ด๋keyup
์ฌ์ฉ ๊ถ์ฅ)1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ document.addEventListener('keypress', function(event) { console.log('Key is being pressed:', event.key); });
ํฌ์ปค์ค ์ด๋ฒคํธ
-
focus
: ์์๊ฐ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ๋1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ element.addEventListener('focus', function(event) { console.log('Element received focus'); });
-
blur
: ์์๊ฐ ํฌ์ปค์ค๋ฅผ ์์ ๋1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ element.addEventListener('blur', function(event) { console.log('Element lost focus'); });
์ ๋ ฅ ์ด๋ฒคํธ
-
input
: ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ (์ฃผ๋ก ํ ์คํธ ํ๋์ ์ฌ์ฉ)1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ inputElement.addEventListener('input', function(event) { console.log('Input value changed:', event.target.value); });
-
change
: ์์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ (์ฃผ๋ก ํผ ์์์ ์ฌ์ฉ)1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ inputElement.addEventListener('change', function(event) { console.log('Input value changed:', event.target.value); });
ํผ ์ด๋ฒคํธ
-
submit
: ํผ์ด ์ ์ถ๋ ๋1 2 3 4 5 6
javascript์ฝ๋ ๋ณต์ฌ formElement.addEventListener('submit', function(event) { event.preventDefault(); // ๊ธฐ๋ณธ ํผ ์ ์ถ ๋์์ ๋ง์ console.log('Form was submitted'); });
๊ธฐํ ์ด๋ฒคํธ
-
resize
: ์ฐฝ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ ๋1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ window.addEventListener('resize', function(event) { console.log('Window was resized'); });
-
unload
: ํ์ด์ง๊ฐ ์ธ๋ก๋๋ ๋1 2 3 4 5
javascript์ฝ๋ ๋ณต์ฌ window.addEventListener('unload', function(event) { console.log('Page is being unloaded'); });
-
contextmenu
: ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ ๋1 2 3 4 5 6
javascript์ฝ๋ ๋ณต์ฌ element.addEventListener('contextmenu', function(event) { event.preventDefault(); // ๊ธฐ๋ณธ ์ปจํ ์คํธ ๋ฉ๋ด๋ฅผ ๋ง์ console.log('Right-clicked on the element'); });
JQuery
keydown๊ณผ keyup ์ด๋ฒคํธ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$(document).on("keydown", function(event) {
console.log("ํค ๋ค์ด: " + event.key);
});
$(document).on("keyup", function(event) {
console.log("ํค ์
: " + event.key);
});
// Input ์์
$("#keyInput").keydown(function() {
console.log('ํค ๋ค์ด');
});
$("#keyInput").keyup(function() {
console.log('ํค ์
');
});
2. mouseover์ mouseout ์ด๋ฒคํธ
1
2
3
4
5
6
7
$("#hoverMe").mouseover(function() {
console.log('๋ง์ฐ์ค ์ค๋ฒ');
});
$("#hoverMe").mouseout(function() {
console.log('๋ง์ฐ์ค ์์');
});
3. load ์ด๋ฒคํธ
1
2
3
4
5
6
7
8
9
$(window).on("load", function() {
console.log('ํ์ด์ง ๋ก๋ ์๋ฃ');
});
// onLoad๋ ๋ฌธ์ ์ ์ฒด๊ฐ ์๋ ํน์ ์์์ ๋ํด์๋ jQuery์์ ์ง์ ์ ์ผ๋ก ์ง์ํ์ง ์์ต๋๋ค.
// ๋์ , DOM์ด ์ค๋น๋์์ ๋ ์คํ๋๋ $(document).ready()๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
$(document).ready(function() {
console.log('๋ฌธ์ ์ค๋น๋จ');
});
4. scroll ์ด๋ฒคํธ
1
2
3
4
5
6
7
8
$(window).scroll(function() {
console.log('์คํฌ๋กค ๋ฐ์');
});
// ํน์ ์์์ ๋ํ ์คํฌ๋กค ์ด๋ฒคํธ
$("#scrollable").scroll(function() {
console.log('์คํฌ๋กค ๋ฐ์');
});
5. ํด๋ฆญ ์ด๋ฒคํธ
1
2
3
4
5
6
7
8
$("#clickMe").click(function() {
alert('๋ฒํผ ํด๋ฆญ๋จ!');
});
// ๋๋ on ๋ฉ์๋๋ฅผ ์ฌ์ฉ
$("#clickButton").on("click", function() {
console.log('๋ฒํผ ํด๋ฆญ๋จ');
});
Leave a comment