๋ชจ๋ ํฌ์คํ
์ ์ธํ๋ฐ [์ํ์ฝ๋ฉ] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "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#
์ด๋ฒ ํฌ์คํ
์ ๊ฐ์์ "Text๊ฐ์ฒด" ์ ๋ชจ๋ ๊ฐ์๋ด์ฉ์ ํฌํจํ์ฌ ์์ฑํ์์ต๋๋ค.
Text ๊ฐ์ฒด
์๊ฐ
ํ
์คํธ ๊ฐ์ฒด๋ ํ
์คํธ ๋
ธ๋์ ๋ํ DOM ๊ฐ์ฒด๋ก CharcterData๋ฅผ ์์ ๋ฐ๋๋ค.
์๋ฅผ ๋ค์ด <p>haeun</p>๋ผ๊ณ ํ๋ค๋ฉด ํ๊ทธ๋ฅผ ์ ์ธํ 'haeun'์ด ๋ฐ๋ก ํ
์คํธ ์ด๋ค.
์๋๋ ํ
์คํธ ๋
ธ๋๋ฅผ ์ฐพ๋ ์์ ๋ค. ์ฃผ๋ชฉํ ๊ฒ์ DOM์์๋ ๊ณต๋ฐฑ์ด๋ ์ค๋ฐ๊ฟ๋ ํ
์คํธ ๋
ธ๋๋ผ๋ ์ ์ด๋ค.
<p id="target1"><span>Hello world</span></p> //๊ณต๋ฐฑ ์ํฐ ๋ฑ ์์ด ๋ค ๋ถ์ด ์์.
<p id="target2">//๊ณต๋ฐฑ๊ณผ ์ํฐ ์กด์ฌ.
<span>Hello world</span>
</p>
<script>
var t1 = document.getElementById('target1').firstChild;
var t2 = document.getElementById('target2').firstChild;
console.log(t1.firstChild.nodeValue);
try{
console.log(t2.firstChild.nodeValue);
} catch(e){
console.log(e);
}
console.log(t2.nextSibling.firstChild.nodeValue);
</script>
์คํ๊ฒฐ๊ณผ
Hello world
TypeError {stack: (...), message: "Cannot read property 'nodeValue' of null"}
Hello world
fisrstChild๋ก ์ฒ์ ์ถ๋ ฅํ๋ฉด ๊ฐ๋ฅดํค๋ ๊ฐ์ฒด ์์ฒด๊ฐ ์ถ๋ ฅ๋๋ค.
ex) <span>Hello world</span>
์ฌ๊ธฐ์ ํ๋ฒ ๋ firstChild๋ฅผ ํ๋ฉด ๊ทธ๋ text๋ฅผ ๋ฆฌํดํด์ค๋ค -> Hello world
๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๊ณต๋ฐฑ์ด ์๋ค๋ฉด, ๊ณต๋ฐฑ์ ๋ฆฌํดํ๋ค.
์ฆ, Dom์์๋ ๊ณต๋ฐฑ ์กฐ์ฐจ๋ ๊ฐ์ฒด์ด๋ค ๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
์ฃผ์๊ธฐ๋ฅ
๊ฐ
ํ
์คํธ ๋
ธ๋์ ๊ฐ์ ๊ฐ์ ธ์ค๋ API
์กฐ์
- appendData()
- deleteData()
- insertData()
- replaceData()
- subStringData()
์์ฑ
๊ฐ API
ํ
์คํธ ๋
ธ๋๋ DOM์์ ์ค์ง์ ์ธ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ฐ์ฒด์ด๋ค. ๋ฐ๋ผ์ ํ
์คํธ ๋
ธ๋์๋ ๊ฐ๊ณผ ๊ด๋ จ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ด ์๋๋ฐ ์ด๋ฒ ์๊ฐ์๋ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋๊ฐ์ API๋ฅผ ์์๋ณธ๋ค.
<ul>
<li id="target">html</li>
<li>css</li>
<li>JavaScript</li>
</ul>
<script>
var t = document.getElementById('target').firstChild;
console.log(t.nodeValue);
console.log(t.data);
</script>
์กฐ์ API
ํ
์คํธ ๋
ธ๋๊ฐ ์์ ๋ฐ์ CharacterData ๊ฐ์ฒด๋ ๋ฌธ์๋ฅผ ์ ์ดํ ์ ์๋ ๋ค์ํ API๋ฅผ ์ ๊ณตํ๋ค. ์๋๋ ์กฐ์๊ณผ ๊ด๋ จ๋ API๋ค์ ๋ชฉ๋ก์ด๋ค.
- appendData()
- deleteData()
- insertData()
- replaceData()
- substringData() // ์ ๋ณด ์ค์ ์ผ๋ถ์ ์ ๋ณด๋ฅผ ๊ฐ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ API
<!DOCTYPE html>
<html>
<head>
<style>
#target{
font-size:77px;
font-family: georgia;
border-bottom:1px solid black;
padding-bottom:10px;
}
p{
margin:5px;
}
</style>
</head>
<body>
<p id="target">Cording everybody!</p>
<p> data : <input type="text" id="datasource" value="JavaScript" /></p>
<p> start :<input type="text" id="start" value="5" /></p>
<p> end : <input type="text" id="end" value="5" /></p>
<p><input type="button" value="appendData(data)" onclick="callAppendData()" />
<input type="button" value="deleteData(start,end)" onclick="callDeleteData()" />
<input type="button" value="insertData(start,data)" onclick="callInsertData()" />
<input type="button" value="replaceData(start,end,data)" onclick="callReplaceData()" />
<input type="button" value="substringData(start,end)" onclick="callSubstringData()" /></p>
<script>
var target = document.getElementById('target').firstChild;
var data = document.getElementById('datasource');
var start = document.getElementById('start');
var end = document.getElementById('end');
function callAppendData(){
target.appendData(data.value);
}
function callDeleteData(){
target.deleteData(start.value, end.value);
}
function callInsertData(){
target.insertData(start.value, data.value);
}
function callReplaceData(){
target.replaceData(start.value, end.value, data.value);
}
function callSubstringData(){
alert(target.substringData(start.value, end.value));
}
</script>
</body>
</html>
์ ์์ ๋ ๊ผญ ์ค์ตํด๋ณด๊ธฐ! (Text๋ด์ฉ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ์์ ์ถ๊ฐ ๋ชจ๋ ๊ฐ๋ฅ)
๋ง์ง๋ง substringData๋ ์ถ์ถ์ด ๊ฐ๋ฅํ๋ค. ์ฆ ์ ํํ๋ ๊ฐ๋ง ๋ฆฌํดํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํ์ฌ ํ
์คํธ ๋ด์ฉ์ ์ถ์ถ ํ ์๋ ์๋ค.