[Js] ๋ ธ๋ ์ข ๋ฅ API | ๋ ธ๋ ๋ณ๊ฒฝ API | jQuery ๋ ธ๋ ๋ณ๊ฒฝ API
- -
๋ชจ๋ ํฌ์คํ ์ ์ธํ๋ฐ [์ํ์ฝ๋ฉ] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "egoing Lee"๋์ ์๋ฃ์ ๋๋ค.
์์ ์ ์ธ ์๋๊ฐ ์๋ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋๋ ๋ชฉ์ ์ผ๋ก ํฌ์คํ ํ ๊ฒ์ ๋๋ค.
์ด๋ฒ ํฌ์คํ ์ ๊ฐ์์ "Node๊ฐ์ฒด" ์ค ๋ ธ๋ ์ข ๋ฅ API ๊ฐ์์ ๋ ธ๋ ๋ณ๊ฒฝ API๊ฐ์, ๊ทธ๋ฆฌ๊ณ jQuery ๋ ธ๋ ๋ณ๊ฒฝ API๊ฐ์๋ฅผ ๋ชจ๋ ํฌํจํ์ฌ ์์ฑํ์์ต๋๋ค.
๋ ธ๋ ์ข ๋ฅ API
๋ ธ๋ ์์ ์ ํ๊ฒ ๋๋ฉด ํ์ฌ ์ ํ๋ ๋ ธ๋๊ฐ ์ด๋ค ํ์ ์ธ์ง๋ฅผ ํ๋จํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ API๊ฐ nodeType, nodeName์ด๋ค.
- Node.nodeType
node์ ํ์ ์ ์๋ฏธํ๋ค. - Node.nodeName
node์ ์ด๋ฆ (ํ๊ทธ๋ช ์ ์๋ฏธํ๋ค.)
Node Type
๋ ธ๋์ ์ข ๋ฅ์ ๋ฐ๋ผ์ ์ ํด์ง ์์๊ฐ ์กด์ฌํ๋ค. ์๋๋ ๋ชจ๋ ๋ ธ๋์ ์ข ๋ฅ์ ์ข ๋ฅ์ ๋ฐ๋ฅธ ๊ฐ์ ์ถ๋ ฅํ๋ ์์ ๋ค.
for(var name in Node){
console.log(name, Node[name]);
}
๊ฒฐ๊ณผ
ELEMENT_NODE 1
ATTRIBUTE_NODE 2
TEXT_NODE 3
CDATA_SECTION_NODE 4
ENTITY_REFERENCE_NODE 5
ENTITY_NODE 6
PROCESSING_INSTRUCTION_NODE 7
COMMENT_NODE 8
DOCUMENT_NODE 9
DOCUMENT_TYPE_NODE 10
DOCUMENT_FRAGMENT_NODE 11
NOTATION_NODE 12
DOCUMENT_POSITION_DISCONNECTED 1
DOCUMENT_POSITION_PRECEDING 2
DOCUMENT_POSITION_FOLLOWING 4
DOCUMENT_POSITION_CONTAINS 8
DOCUMENT_POSITION_CONTAINED_BY 16
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC 32
๋ช๊ฐ์ง ์๋ฅผ ๋ค์ด์ ์คํ์์ผ ๋ณด๋ฉด ๋ ธ๋ํ์ ์ ์ ์ ์๋ค.
๊ฐ๊ฐ์ ๋ ธ๋ ํ์ ์ ์ซ์๋ฅผ ๋ค ์ธ์ฐ๊ธฐ๊ฐ ํ๋ค ๊ฒ์ ๊ณ ๋ คํ์ฌ ๋ฌธ์(๋ณ์)๋ก ์ ๋ถ ์ ๊ณต๋๋ค.
์ฆ, ๋ ธ๋ํ์ ์ ํด๋น๋๋ ๋ ธ๋๊ฐ ์๋ฆฌ๋จผํธ ์ธ์ง ๋๋ ์์ฑ์ธ์ง ์ฝ๋ฉํธ์ธ์ง ํ ์คํธ ์ธ์ง.. ๋ฑ์ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ๋ ๊ฒ์ด๊ณ ,
๋ ธ๋ ๋ค์์ ์กฐ๊ธ๋ ๋ํ ์ผ ํ ์ ๋ณด ex: ํ๊ทธ์ ์ด๋ฆ ๋ฑ์ ์๋ ค์ฃผ๋ ํ๋กํผํฐ์ด๋ค.
์๋ ์์ ๋ ๋ ธ๋ ์ข ๋ฅ API๋ฅผ ์ด์ฉํด์ ๋ ธ๋๋ฅผ ์ฒ๋ฆฌํ๋ ์์ ๋ค.
ํจ์๊ฐ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ๊ฒ์ ์ฌ๊ทํจ์๋ผ๊ณ ํ๋๋ฐ ๋ณธ ์์ ๋ ์ฌ๊ท ํจ์์ ์๋ฅผ ๋ณด์ฌ์ค๋ค.
<!DOCTYPE html>
<html>
<body id="start">
<ul>
<li><a href="./532">html</a></li>
<li><a href="./533">css</a></li>
<li><a href="./534">JavaScript</a>
<ul>
<li><a href="./535">JavaScript Core</a></li>
<li><a href="./536">DOM</a></li>
<li><a href="./537">BOM</a></li>
</ul>
</li>
</ul>
<script>
function traverse(target, callback){
if(target.nodeType === 1){
//if(target.nodeName === 'A')
callback(target);
var c = target.childNodes;
for(var i=0; i<c.length; i++){
traverse(c[i], callback);
}
}
}
traverse(document.getElementById('start'), function(elem){//๋๋ฒ์งธ๋ก ํธ์ถ ํ๋ ํจ์ = "์ต๋ช
ํจ์"
console.log(elem);
});
</script>
</body>
</html>
์์ ๊ฐ์ ์ฝ๋๋ฅผ ์ง๋ ค๋ฉด ํจ์ ๊ตฌ์ฑ์ ์ดํดํด์ผ ํ๋ค. traverseํจ์๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ์๋์ง๋ฅผ ์ดํด๋ณด๋๋ก ํ์. ์๋ ์์์ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค.
www.youtube.com/watch?v=RcDsVD_O8dQ&feature=youtu.be
๋ ธ๋ ๋ณ๊ฒฝ API
๋ ธ๋๋ฅผ ์ถ๊ฐ, ์ ๊ฑฐ, ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
๋ ธ๋ ์ถ๊ฐ
๋ ธ๋์ ์ถ๊ฐ์ ๊ด๋ จ๋ API๋ค์ ์๋์ ๊ฐ๋ค.
- appendChild(child)
๋ ธ๋์ ๋ง์ง๋ง ์์์ผ๋ก ์ฃผ์ด์ง ์๋ฆฌ๋จผํธ ์ถ๊ฐ - insertBefore(newElement, referenceElement)
appendChild์ ๋์๋ฐฉ๋ฒ์ ๊ฐ์ผ๋ ๋๋ฒ์งธ ์ธ์๋ก ์๋ฆฌ๋จผํธ๋ฅผ ์ ๋ฌ ํ์ ๋ ์ด๊ฒ ์์ ์๋ฆฌ๋จผํธ๊ฐ ์ถ๊ฐ๋๋ค.
๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์๋ ์ถ๊ฐํ ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํด์ผ ํ๋๋ฐ ์ด๊ฒ์ document ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ด๋ค. ์๋ API๋ ๋ ธ๋๋ฅผ ์์ฑํ๋ API์ด๋ค.
- document.createElement(tagname)
์๋ฆฌ๋จผํธ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ค. - document.createTextNode(data)
ํ ์คํธ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ค.
<ul id="target">
<li>HTML</li>
<li>CSS</li>
</ul>
<input type="button" onclick="callAppendChild();" value="appendChild()" />
<input type="button" onclick="callInsertBefore();" value="insertBefore()" />
<script>
function callAppendChild(){//์ ์ผ ๋์ ๋
ธ๋ ์ถ๊ฐํ๊ธฐ
var target = document.getElementById('target');
var li = document.createElement('li');
var text = document.createTextNode('JavaScript');
li.appendChild(text);//ํฉ์ณ์ค์ผํจ
target.appendChild(li);
}
function callInsertBefore(){//๊ฐ์ฅ ์์ ๋
ธ๋ ์ถ๊ฐํ๊ธฐ
var target = document.getElementById('target');
var li = document.createElement('li');
var text = document.createTextNode('jQuery');
li.appendChild(text);
target.insertBefore(li, target.firstChild);//insertBefore : ์์ ์ถ๊ฐ
}
</script>
๋ ธ๋ ์ ๊ฑฐ
๋ ธ๋ ์ ๊ฑฐ๋ฅผ ์ํด์๋ ์๋ API๋ฅผ ์ฌ์ฉํ๋ค. ์ด ๋ ๋ฉ์๋๋ ์ญ์ ๋์์ ๋ถ๋ชจ ๋ ธ๋ ๊ฐ์ฒด์ ๊ฒ์ ์คํํด์ผ ํ๋ค๋ ์ ์ ์ ์ํ์.
<ul>
<li>HTML</li>
<li>CSS</li>
<li id="target">JavaScript</li>
</ul>
<input type="button" onclick="callRemoveChild();" value="removeChild()" />
<script>
function callRemoveChild(){
var target = document.getElementById('target');
target.parentNode.removeChild(target);
}
</script>
๋ ธ๋ ๋ฐ๊พธ๊ธฐ
๋ ธ๋ ๋ฐ๊พธ๊ธฐ์๋ ์๋ API๊ฐ ์ฌ์ฉ๋๋ค.
<ul>
<li>HTML</li>
<li>CSS</li>
<li id="target">JavaScript</li>
</ul>
<input type="button" onclick="callReplaceChild();" value="replaceChild()" />
<script>
function callReplaceChild(){
var a = document.createElement('a');
a.setAttribute('href', 'http://opentutorials.org/module/904/6701');
a.appendChild(document.createTextNode('Web browser JavaScript'));
var target = document.getElementById('target');
target.replaceChild(a,target.firstChild);
}
</script>
๋ชจ๋ ํฉ์ณ๋ณธ๋ค๋ฉด ์๋์ ๊ฐ๋ค.
<ul id="target">
<li>HTML</li>
<li>CSS</li>
<li id = "tata">JavaScript</li>
</ul>
<input type="button" onclick="callAppendChild();" value="appendChild" />
<input type="button" onclick="callInsertBefore();" value="insertBefore" />
<input type="button" onclick="callRemoveChild();" value="remove" />
<input type = "button" onclick ="callReplaceChild();" value="change"/>
<script>
function callAppendChild(){
var target = document.getElementById('target');
var li = document.createElement('li');
var text = document.createTextNode('JavaScript');
li.appendChild(text);
target.appendChild(li);
}
function callInsertBefore(){
var target = document.getElementById('target');
var li = document.createElement('li');
var text = document.createTextNode('jQuery');
li.appendChild(text);
target.insertBefore(li, target.firstChild);
}
function callRemoveChild(){
var tata = document.getElementById('tata');
tata.parentNode.removeChild(tata);
}
function callReplaceChild(){
var a = document.createElement('a');
a.setAttribute('href','https://lucete1230-cyberpolice.tistory.com/manage/posts/');
a.appendChild(document.createTextNode('my blog~~'));
var tata = document.getElementById('tata');
tata.replaceChild(a,tata.firstChild);
}
</script>
๊ฒฐ๊ณผ
jQuery ๋ ธ๋ ๋ณ๊ฒฝ API
jQuery๋ฅผ ์ด์ฉํด์ ๋ ธ๋๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. jQuery์์ ๋ ธ๋๋ฅผ ์ ์ดํ๋ ๊ธฐ๋ฅ์ ์ฃผ๋ก Manipulation ์นดํ ๊ณ ๋ฆฌ์ ์ํด ์๋ค.
http://api.jquery.com/category/manipulation/
์ถ๊ฐ
์ถ๊ฐ์ ๊ด๋ จ๋ ์ฃผ์ํ ๋ฉ์๋๋ 4๊ฐ์ง๋ค. ๊ฐ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
์๋ ์ฝ๋๋ ์์ API๋ฅผ ์ด์ฉํด์ ๋ฌธ์์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์์ด๋ค. (์คํ)
<div class="target">
content1
</div>
<div class="target">
content2
</div>
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script>
$('.target').before('<div>before</div>');
$('.target').after('<div>after</div>');
$('.target').prepend('<div>prepend</div>');
$('.target').append('<div>append</div>');
</script>
๊ฐ ๋ฉ์๋๊ฐ ์ด๋์ ์์น๋๋์ง ํ์ธํด๋ณด์.
www.youtube.com/watch?v=sONnwMyHNQQ&feature=youtu.be
์ ๊ฑฐ
์ ๊ฑฐ์ ๊ด๋ จ๋ API๋ remove์ empty๊ฐ ์๋ค. remove๋ ์ ํ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด๊ณ empty๋ ์ ํ๋ ์๋ฆฌ๋จผํธ์ ํ ์คํธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด๋ค. (์คํ)
<div class="target" id="target1">
target 1
</div>
<div class="target" id="target2">
target 2
</div>
<input type="button" value="remove target 1" id="btn1" />
<input type="button" value="empty target 2" id="btn2" />
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$('#btn1').click(function(){
$('#target1').remove();
})
$('#btn2').click(function(){
$('#target2').empty();
})
</script>
๋ฐ๊พธ๊ธฐ
replaceAll๊ณผ replaceWith๋ ๋ชจ๋ ๋ ธ๋์ ๋ด์ฉ์ ๊ต์ฒดํ๋ API์ด๋ค. replaceWith๊ฐ ์ ์ด ๋์์ ๋จผ์ ์ง์ ํ๋ ๊ฒ์ ๋ฐํด์ replaceAll์ ์ ์ด ๋์์ ์ธ์๋ก ์ ๋ฌํ๋ค. (์คํ)
<div class="target" id="target1">
target 1
</div>
<div class="target" id="target2">
target 2
</div>
<input type="button" value="replaceAll target 1" id="btn1" />
<input type="button" value="replaceWith target 2" id="btn2" />
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script>
$('#btn1').click(function(){
$('<div>replaceAll</div>').replaceAll('#target1');
})
$('#btn2').click(function(){
$('#target2').replaceWith('<div>replaceWith</div>');
})
</script>
๋ณต์ฌ
๋ ธ๋๋ฅผ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. (์คํ)
<div class="target" id="target1">
target 1
</div>
<div class="target" id="target2">
target 2
</div>
<div id="source">source</div>
<input type="button" value="clone replaceAll target 1" id="btn1" />
<input type="button" value="clone replaceWith target 2" id="btn2" />
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script>
$('#btn1').click(function(){
$('#source').clone().replaceAll('#target1');
})
$('#btn2').click(function(){
$('#target2').replaceWith($('#source').clone());
})
</script>
์ด๋
dom manipulation API์ ์ธ์๋ก ํน์ ๋ ธ๋๋ฅผ ์ ํํ๋ฉด ์ด๋์ ํจ๊ณผ๊ฐ ๋๋ค. (์คํ)
<div class="target" id="target1">
target 1
</div>
<div id="source">source</div>
<input type="button" value="append source to target 1" id="btn1" />
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script>
<script>
$('#btn1').click(function(){
$('#target1').append($('#source'));
})
</script>
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Js ] Document ๊ฐ์ฒด (0) | 2021.02.10 |
---|---|
[Js] ๋ฌธ์์ด๋ก ๋ ธ๋ ์ ์ด (0) | 2021.02.10 |
[Js] Node ๊ฐ์ฒด | Node ๊ด๊ณ API (0) | 2021.02.10 |
[Js] jQuery ์์ฑ ์ ์ด API | jQuery ์กฐํ ๋ฒ์ ์ ํ | javascript (0) | 2021.02.10 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค