[Js] DOM | DOM ์ ์ด๋์ ์ฐพ๊ธฐ | Javascript DOM
- -
๋ชจ๋ ํฌ์คํ ์ ์ธํ๋ฐ [์ํ์ฝ๋ฉ] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "egoing Lee"๋์ ์๋ฃ์ ๋๋ค.
์์ ์ ์ธ ์๋๊ฐ ์๋ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋๋ ๋ชฉ์ ์ผ๋ก ํฌ์คํ ํ ๊ฒ์ ๋๋ค.
์ ๊ฐ์ ์ค ๊ธฐ์ด์ ์ธ ๋ด์ฉ์ด๋, ํ์ ์ง์ ๋ฑ์ ๋ด์ฉ์ ๋ฐ๋ก ํฌ์คํ ํ์ง ์๊ฒ ์ต๋๋ค. (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>
์ด๋ ๊ฒ ๋์์ ์ ์ดํ๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์๋ค.
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Js] jQuery ์ ์ด ๋์์ฐพ๊ธฐ | jQuery | javascript (0) | 2021.02.08 |
---|---|
[Js] jQuery | ๋ผ์ด๋ธ๋ฌ๋ฆฌ | DOM base jQuery (0) | 2021.02.07 |
โ [Js] ์ฐฝ ์ ์ด | ์ ์ฐฝ์ ์ ๊ทผ | ํ์ ์ฐจ๋จ (0) | 2021.02.07 |
[Js] Navigator ๊ฐ์ฒด | ํฌ๋ก์ค๋ธ๋ผ์ฐ์ง | (0) | 2021.02.07 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค