Node.cloneNode()
사용법
cloneNode()
함수는
동일 문서 내에서 호출한 DOM 노드를 복사하여 복제본을 반환합니다.
매개변수로 해당 노드만 복제할지, 아니면 자손 노드까지 복제할지 설정할 수 있습니다.
이때, 해당하는 노드의 모든 속성과 그 값도 복제합니다.
노드
HTML DOM은 노드의 집합체입니다.
HTML에서 말하는 요소는 "요소 노드"를 의미하며,
텍스트는 "텍스트 노드",
주석은 "주석 노드"라고 말합니다.
요소는 오직 "요소 노드"만을 의미합니다.
cloneNode()
함수는 문서 내의 특정 요소를 복제하는데 많이 활용됩니다.
예시
코드 부연설명
getElementById()
함수는 HTML 문서 내에서 주어진 문자열과 값이 일치하는 id 속성을 가진 요소 객체를 반환합니다.
구문
node
는 복제하려는 노드 객체입니다.
매개변수
사용법 참고사항
cloneNode()
함수는 동일 문서 내에서 호출한 DOM 노드를 복사하여 복제본을 반환합니다.
하지만, 자바스크립트로 할당된 이벤트 리스너와 <canvas>
요소의 콘텐츠(그려진 이미지나 그래픽)는 복사되지 않습니다.
속성과 값의 복사
HTML 속성으로 할당한 인라인 이벤트 리스너: 복사 됨
인라인 이벤트 리스너, 즉 HTML에서 직접 속성으로 설정한 이벤트 리스너(예: <button onclick="someFunction()">Click me</button>
)는 그대로 복사됩니다.
자바스크립트로 할당한 이벤트 리스너: 복사 안 됨
자바스크립의 addEventListener()
를 사용하여 추가된 이벤트 리스너는 복사되지 않으며, 이 경우 복제된 노드에는 해당 이벤트 리스너가 없습니다.
또한, 노드의 속성으로 할당한 이벤트 리스너(예: node.onclick = someFunction
)도 복사되지 않습니다. 이러한 방식으로 설정된 이벤트는 복제된 요소에서 작동하지 않게 됩니다.
<canvas>
요소의 복제
<canvas>
요소는 복사될 때, 그려진 이미지나 그래픽을 포함하지 않습니다.
즉, 원본 <canvas>
에서 그린 내용은 복제된 <canvas>
에는 존재하지 않습니다. 복사된 <canvas>
는 빈 상태로 복제됩니다.
주의할 점
부연설명
id
속성은 해당 요소의 고유식별자를 지정하는 속성입니다. 이 속성의 값은 문서(웹 페이지)에서 유일하고, 고유해야 합니다.
간단한 활용 예제
코드 부연설명
lastElementChild
속성은 현재 요소의 마지막 자식 요소를 반환합니다.
코드 부연설명
querySelector()
함수는 지정한 CSS 선택자와 일치하는 첫 번째 요소 객체를 반환합니다.
코드 부연설명
appendChild()
함수는 노드를 특정 노드의 마지막 자식으로 추가합니다.
- 사과
- 바나나
- 복숭아
브라우저 호환성
메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
cloneNode()
|
1 | 12 | 1 | 1.1 |
명세서
명세서 사양 | |
---|---|
cloneNode()
|
DOM Standard #ref-for-dom-node-clonenode① |