Node 종류 API
각 노드의 종류를 파악할 수 있는 프로퍼티
Node.nodeType
노드의 종류에 따라서 정해진 상수가 존재함. 그 상수값을 반환하는 프로퍼티가 Node.nodeType
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div id="start">
<h2>Node.nodeType</h2>
</div>
<script>
var start = document.getElementById('start');
// ELEMENT_NODE 에 해당하는 상수 1을 반환
console.log(start.nodeType);
// id start 요쇼의 첫번째 자식은 줄바꿈 문자로 #text객체임
// TEXT_NODE 에 해당하는 상수 3을 반환
console.log(start.firstChild.nodeType);
// DOCUMENT_NODE 에 해당하는 상수 9를 반환
console.log(document.nodeType);
console.log('node 상수 전체 출력');
for(var name in Node) {
console.log(name, Node[name]);
}
</script>
</body>
</html>
Node.nodeName
node의 이름(태그명을 의미)
상수로 노드타입을 다 기억하는것은 쉽지않기 때문에 이름도 같이 제공
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<div id="start">
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
<ul>
<li>D</li>
<li>
<ul>
<li>E</li>
<li><a href="#">F</a></li>
</ul>
</li>
<li><a href="#">G</a></li>
</ul>
</div>
<script>
function traverse(target, callback) {
// 엘리먼트노드인지 판별
if(target.nodeType === 1) {
callback(target);
// 태그명이 a 인지 판별
if(target.nodeName === 'A') {
target.style.backgroundColor = 'red';
}
var childrens = target.childNodes;
for(var i=0; i<childrens.length; i++) {
// 자식 요소들을 순회하며 반복
traverse(childrens[i], callback);
}
}
}
traverse(document.getElementById('start'), function callback(target) {
target.style.color = 'blue';
});
</script>
</body>
</html>
Last updated
Was this helpful?