createElement 메서드
createElement 메서드는
매개변수로 태그 이름을 전달하여
새로운 요소를 생성할 수 있게 해줍니다.
생성 후에는 요소를 일반 요소처럼 다룰 수 있으며,
prepend,
append,
appendChild,
insertBefore
또는 insertAdjacentElement
메서드를 사용하여 페이지에 추가할 수 있습니다.
createElement의 작업 결과를
변수에 저장하면, 그 변수는 마치
querySelector
나 getElementById로
가져온 것과 같은 요소를 가지게 됩니다.
유일한 차이점은 우리의 요소가
페이지에 배치되지 않는다는 점입니다.
그 외에는 innerHTML 변경, 속성 설정,
이벤트 핸들러 부착을 할 수 있고,
최종적으로 페이지에 배치할 수 있습니다.
구문
document.createElement('태그 이름');
예제
문단을 생성하고, 텍스트를 설정한 후,
#parent 블록의 끝에 페이지에 배치해 봅시다:
<div id="parent">
<p>1</p>
<p>2</p>
<p>3</p>
</div>
let parent = document.querySelector('#parent');
let p = document.createElement('p');
p.textContent = '!';
parent.appendChild(p);
코드 실행 결과:
<div id="parent">
<p>1</p>
<p>2</p>
<p>3</p>
<p>!</p>
</div>
예제
ul이 주어졌습니다.
여기에 9개의 li 태그를 배치하고,
그들의 텍스트를 순차적인 번호로 만들어 봅시다:
<ul id="parent"></ul>
let parent = document.querySelector('#parent');
for (let i = 1; i <= 9; i++) {
let li = document.createElement('li');
li.textContent = i;
parent.appendChild(li);
}
코드 실행 결과:
<ul id="parent">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
예제
요소를 삽입할 때 이벤트 핸들러를 바인딩해 봅시다:
<ul id="parent"></ul>
let parent = document.querySelector('#parent');
for (let i = 1; i <= 9; i++) {
let li = document.createElement('li');
li.textContent = i;
li.addEventListener('click', function() {
alert(this.textContent);
});
parent.appendChild(li);
};
:
함께 보기
-
요소를 복제할 수 있는 메서드
cloneNode,
-
새로운 텍스트 노드를 생성할 수 있는 메서드
createTextNode,