์ƒˆ์†Œ์‹

Languages/Java Script

[Js] DOM | DOM ์ œ์–ด๋Œ€์ƒ ์ฐพ๊ธฐ | Javascript DOM

  • -
๋ฐ˜์‘ํ˜•

๋ชจ๋“  ํฌ์ŠคํŒ…์€ ์ธํ”„๋Ÿฐ [์ƒํ™œ์ฝ”๋”ฉ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์˜์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ

์ถœ์ฒ˜๋Š” ์•„๋ž˜์˜ ์ฃผ์†Œ๋กœ "egoing Lee"๋‹˜์˜ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. 

์ƒ์—…์ ์ธ ์˜๋„๊ฐ€ ์•„๋‹Œ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋†“๋Š” ๋ชฉ์ ์œผ๋กœ ํฌ์ŠคํŒ… ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

www.inflearn.com/course/javascript-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%95%EC%A2%8C#

 

์›น๋ธŒ๋ผ์šฐ์ € Javascript (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ) - ์ธํ”„๋Ÿฐ

์ƒํ™œ์ฝ”๋”ฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ ์ž…๋‹ˆ๋‹ค. ์›น๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ณต๋ถ€ํ•ด ๋ด…๋‹ˆ๋‹ค. ์ดˆ๊ธ‰ ์›น ๊ฐœ๋ฐœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด JavaScript ์˜จ๋ผ์ธ ๊ฐ•์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์ขŒ

www.inflearn.com

์œ„ ๊ฐ•์˜ ์ค‘ ๊ธฐ์ดˆ์ ์ธ ๋‚ด์šฉ์ด๋‚˜, ํ•„์š” ์ง€์‹ ๋“ฑ์˜ ๋‚ด์šฉ์€ ๋”ฐ๋กœ ํฌ์ŠคํŒ… ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. (html, css, ์‹ค์Šต ํ™˜๊ฒฝ ๋“ฑ..)


 

DOM์„ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ œ์–ด ๋Œ€์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ฐพ์€ ํ›„ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋งŒ๋“ค์–ด๋†“์€ ๊ฐ์ฒด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.


์ œ์–ด ๋Œ€์ƒ์„ ์ฐพ๊ธฐ

Document Object Model๋กœ ์›นํŽ˜์ด์ง€๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด ๋ชจ๋ธ์„ ์˜๋ฏธํ•œ๋‹ค.

window ๊ฐ์ฒด์˜ document ํ”„๋กœํผํ‹ฐ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Window ๊ฐ์ฒด๊ฐ€ ์ฐฝ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด Document ๊ฐ์ฒด๋Š” ์œˆ๋„์šฐ์— ๋กœ๋“œ๋œ ๋ฌธ์„œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. DOM์˜ ํ•˜์œ„ ์ˆ˜์—…์—์„œ๋Š” ๋ฌธ์„œ๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃฌ๋‹ค.

 

document.getElementsByTagName

๋ฌธ์„œ ๋‚ด์—์„œ ํŠน์ • ํƒœ๊ทธ์— ํ•ด๋‹น๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. getElementsByTagName์€ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ํƒœ๊ทธ๋ช…์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋“ค์„ ์ฐพ์•„์„œ ๊ทธ ๋ฆฌ์ŠคํŠธ๋ฅผ NodeList๋ผ๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

NodeList๋Š” ๋ฐฐ์—ด์€ ์•„๋‹ˆ์ง€๋งŒ length์™€ ๋ฐฐ์—ด์ ‘๊ทผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<script>
    var lis = document.getElementsByTagName('li');
    for(var i=0; i < lis.length; i++){
        lis[i].style.color='red';   
    }
</script>
</body>
</html>

์œ„ ์˜ˆ์‹œ๋Š” ๋งˆ์น˜ <li style="color:red"> ์™€ ๋™์ผํ•œ ์˜๋ฏธ๋ฅผ ์ง€๋‹Œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋˜๋ฉด, document๊ฐ์ฒด๊ฐ€ ์ด ๋ฌธ์„œ ์ „์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ํƒœ๊ทธ์˜ ์ด๋ฆ„์ด li์ธ ์—˜๋ฆฌ๋จผํŠธ๋“ค์„ ๊ฐ€์ ธ์™€์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ’์€ ๊ฒฐ๊ตญ li์˜ ํ•ด๋‹นํ•˜๋Š” ๊ฐ๊ฐ์˜ ํƒœ๊ทธ๋“ค์˜ ๊ฐ์ฒด๋ฅผ ๋‹ด์€ ์œ ์‚ฌ ๋ฐฐ์—ด์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

(์œ ์‚ฌ ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์€ ์•„๋‹ˆ์ง€๋งŒ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ๋ช…์นญํ•œ๋‹ค)

 

์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ๋ฌธ์„œ ์ „์ฒด๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์กฐํšŒ ๋Œ€์ƒ์„ ์ขํžˆ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ์€ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ์—์„œ๋„ ๋ชจ๋‘ ์ ์šฉ๋œ๋‹ค.

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<ol>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ol>
<script>
    var ul = document.getElementsByTagName('ul')[0]; //ul์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ๋Š”๋‹ค.
    var lis = ul.getElementsByTagName('li'); //ulํ•˜์œ„์˜ ์—˜๋ฆฌ๋จผํŠธ๋งŒ ์กฐํšŒํ•œ๋‹ค.
    for(var i=0; lis.length; i++){
        lis[i].style.color='red';   
    }
</script>
</body>
</html>

 

 

์ด์ค‘์—์„œ ul๋’ค [0]์ด๋ผ๋Š” ๋ฐฐ์—ด์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š” ๊ฑธ๊นŒ?

์ € ๋ฐฐ์—ด์ด ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ul์ด๋ผ๋Š” ๊ฐ์ฒด ์ค‘์— ํ•ด๋‹นํ•˜๋Š” ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰ 0์ด๋ผ๊ณ  ํ•˜๋ฉด ulํƒœ๊ทธ๋กœ ๋ฌถ์€ ๋ฌถ์Œ ์ค‘ ์ฒซ๋ฒˆ์งธ ๋ฌถ์Œ์„ ์˜๋ฏธํ•˜๊ณ , 1์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด ๋‘๋ฒˆ์งธ์˜ ํ•ด๋‹นํ•˜๋Š” ulํƒœ๊ทธ๋ฅผ ๋‹ด์•„์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

document.getElementsByClassName

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํƒœ๊ทธ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ๋ฐ”๋กœ classname์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ๊ฒƒ์ด๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด html์—์„œ๋Š” class๋ผ ๋ช…์นญํ•˜์ง€๋งŒ, javascript์—์„œ๋Š” ClassName์œผ๋กœ ์นญํ•œ๋‹ค.

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li class="active">CSS</li>
    <li class="active">JavaScript</li>
</ul>
<script>
    var lis = document.getElementsByClassName('active');
    for(var i=0; i < lis.length; i++){
        lis[i].style.color='red';   
    }
</script>
</body>
</html>

์ธ์ž๋กœ ์ „๋‹ฌํ•  ๋•Œ, ํด๋ž˜์Šค ๋„ค์ž„์„ ๊ฐ€์ง„ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์กฐํšŒํ•˜์—ฌ ์œ ์‚ฌ๋ฐฐ์—ด์˜ ๋‹ด๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํด๋ž˜์Šค ๊ฐ’์ด ๋™์ผํ•œ ํƒœ๊ทธ๋งŒ ๋ฐ”๋€Œ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

document.getElementById

์œ„์˜ ๋ฉ”์†Œ๋“œ๋Š” ๋ณต์ˆ˜(s)๊ฐ€ ๋ถ™์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ์กฐํšŒ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜๋งŒ ํ•ด๋‹นํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. html ํƒœ๊ทธ ์†์„ฑ ์ค‘ id๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์กฐํšŒํ•˜๊ณ , ์„ฑ๋Šฅ์€ ๊ฐ€์žฅ ์ข‹๋‹ค.

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li id="active">CSS</li>
    <li>JavaScript</li>
</ul>
<script>
    var li = document.getElementById('active');
    li.style.color='red';
</script>
</body>
</html>

๋ฌธ์„œ์—์„œ id๋ผ๋Š” ๊ฒƒ์€ ์œ ์ผ๋ฌด์ผ ์‹๋ณ„์ž์ด๊ธฐ ๋•Œ๋ฌธ์— id๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์˜ ๋ฆฌํ„ด ๊ฐ’์€ ๋‹จ ํ•˜๋‚˜์ด๋‹ค.

์ฆ‰ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๊ณ  ๋ฐ”๋กœ ๊ฐ์ฒด์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

document.querySelector 

css ์„ ํƒ์ž์˜ ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ• ์ˆ˜๋„ ์žˆ๋‹ค. ์ฆ‰ ์„ ํƒ์ž๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<ol>
    <li>HTML</li>
    <li class="active">CSS</li>
    <li>JavaScript</li>
</ol>
 
<script>
    var li = document.querySelector('li'); //๋ชจ๋“  liํƒœ๊ทธ๋ฅผ ์„ ํƒํ•˜๋Š” ์„ ํƒ์ž
    li.style.color='red';
    var li = document.querySelector('.active'); // .์€ ์–ด๋–ค ์—˜๋ฆฌ๋จผํŠธ์ด๊ฑด, class์˜ ์†์„ฑ ๊ฐ’์ด active์ด๋ฉด ๋œ๋‹ค.
    li.style.color='blue';
</script>
</body>
</html>

 

ํ•˜์ง€๋งŒ ์œ„์— Selector๋ฅผ ์“ฐ๋ฉด ํ•˜๋‚˜๋งŒ ๋ฆฌํ„ด์„ ํ•ด์ค€๋‹ค. ์ฆ‰ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ผ์ ์œผ๋กœ ์กฐํšŒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

document.querySelectorAll

querySelector๊ณผ ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘๋ฐฉ๋ฒ•์€ ๊ฐ™์ง€๋งŒ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์กฐํšŒํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.(์œ ์‚ฌ๋ฐฐ์—ด์˜ ๋ชจ๋‘ ๋‹ด์Œ)

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<ol>
    <li>HTML</li>
    <li class="active">CSS</li>
    <li>JavaScript</li>
</ol>
 
<script>
    var lis = document.querySelectorAll('li');
    for(var name in lis){
        lis[name].style.color = 'blue';
    }
</script>
</body>
</html>

์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด, ๋ชจ๋“  ์ฝ”๋“œ์˜ ์ƒ‰์ƒ์ด ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. ๋งŒ์•ฝ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ• ๊นŒ?

<!DOCTYPE html>
<html>
<body>
<ul>
    <li>HTML</li>
    <li>CSS</li>
    <li>JavaScript</li>
</ul>
<ol>
    <li>HTML</li>
    <li class="active">CSS</li>
    <li>JavaScript</li>
</ol>
 
<script>
    var lis = document.querySelectorAll('li'); //๋ชจ๋“  liํƒœ๊ทธ๋ฅผ ์„ ํƒํ•˜๋Š” ์„ ํƒ์ž
    var li = document.querySelector('.active')
	for(var name in lis){
		lis[name].style.color = 'red';
		if(li.style.color == 'red'){
			li.style.color = 'blue';
		}
	}  
</script>
</body>
</html>

์ด๋ ‡๊ฒŒ ๋Œ€์ƒ์„ ์ œ์–ดํ•˜๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค.

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.