HTML 문서 내의 각 Element들은 고유한 성질을 가지며 각자 element를 DOM 트리내의 노드 개체로 인스턴스화하는 고유한 js 생성자를 가진다
Element 노드는 브라우저가 HTML 문서를 해석해 DOM이 만들어질 때 인스턴스화한다.
이것 외에 createElement() 메서드를 사용하여 프로그래밍으로 Element 노드를 생성할 수도 있다.
주로 appendChild를 이용하여 추가할 수 있다.
var elementNode = document.createElement("textarea");
document.body.appendChild(elementNode);
tagName 속성을 사용해 element의 이름에 접근할 수 있다.
특이점은 대문자로 변형되어 반환한다.
console.log(document.querySelector("a").tagName); // 'A'
attributes 속성을 사용하면 현대 element의 속성 노드의 컬렉션을 얻을 수 있다.
<a href="#" title="asd" data="dd" />;
document.querySelector("a").attributes; // href, title, data..
각각 getAttribute(), setAttribute(), removeAttribute()를 이용해 설정할 수 있다.
<a href="#" />;
var atts = document.querySelector("a");
a.removeAttribute("href");
a.setAttribute("href", "#");
a.getAttribute("href"); // #
hasAttribute() 메서드를 이용해 true/false로 판별할 수 있다.
<a href="#" />;
var atts = document.querySelector("a");
atts.hasAttribute("href"); // true
classList 를 사용하면 className으로 얻는 것 보다 훨씬 쉽게 class attribute를 얻을 수 있다.
<div class="big brown bear" />;
var elm = document.querySelector("div");
elm.classList; // big brown bear {0= "", 1 ="" , 2 =""}
classList.add() 와 classList.remove() 를 이용해 attribute를 간단히 편집 가능하다.
<div class="dog" />;
var elm = document.querySelector("div");
elm.classList.add("cat");
elm.classList.remove("dog"); // cat만 남는다.
classList.toggle() 을 사용하면 하위 값들을 토글시킬 수 있다. 없다면 생성도 가능하다.
<div class="visible" />;
var elm = document.querySelector("div");
elm.classList.toggle("visible"); // visible 삭제
elm.classList.toggle("glow"); // glow 생성
classList.contains() 메서드를 사용해 특정 값을 가지고 있는 지 판별 가능하다.
<div class="big brown bear" />;
var elm = document.querySelector("div");
elm.classList.contains("brown"); // true