createElement 메서드

createElement 메서드는 매개변수로 태그 이름을 전달하여 새로운 요소를 생성할 수 있게 해줍니다. 생성 후에는 요소를 일반 요소처럼 다룰 수 있으며, prepend, append, appendChild, insertBefore 또는 insertAdjacentElement 메서드를 사용하여 페이지에 추가할 수 있습니다.

createElement의 작업 결과를 변수에 저장하면, 그 변수는 마치 querySelector 나 getElementById로 가져온 것과 같은 요소를 가지게 됩니다. 유일한 차이점은 우리의 요소가 페이지에 배치되지 않는다는 점입니다. 그 외에는 innerHTML 변경, 속성 설정, 이벤트 핸들러 부착을 할 수 있고, 최종적으로 페이지에 배치할 수 있습니다.

구문

javascriptdocument.createElement('태그 이름');

예제

문단을 생성하고, 텍스트를 설정한 후, #parent 블록의 끝에 페이지에 배치해 봅시다:

html<div id="parent">
  <p>1</p>
  <p>2</p>
  <p>3</p>
</div>
javascriptlet parent = document.querySelector('#parent');

let p = document.createElement('p');
p.textContent = '!';

parent.appendChild(p);

코드 실행 결과:

html<div id="parent">
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <p>!</p>
</div>

예제

ul이 주어졌습니다. 여기에 9개의 li 태그를 배치하고, 그들의 텍스트를 순차적인 번호로 만들어 봅시다:

html<ul id="parent"></ul>
javascriptlet parent = document.querySelector('#parent');

for (let i = 1; i <= 9; i++) {
  let li = document.createElement('li');
  li.textContent = i;
  parent.appendChild(li);
}

코드 실행 결과:

html<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>

예제

요소를 삽입할 때 이벤트 핸들러를 바인딩해 봅시다:

html<ul id="parent"></ul>
javascriptlet 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,