본문 바로가기
프론트엔드/Javascript

[Javascript] 노드복사 importNode

by jinwanseo 2021. 2. 1.
728x90

노드의 복사

var node = document.importNode('복제 원하는 노드', boolean : 자식 노드 포함 여부);

반환 : [True인경우 : 자식 포함], [False인 경우 : 자식 미포함]

 

샘플 예제 ↓

[HTML]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>노드의 복사 예제</title>
    <style>
        table {
            border-collapse: collapse;
            margin : 20px;
            text-align :center;
        }
        table td {
            border : 1px solid grey;
            padding : 6px 12px;
        }
    </style>
</head>
<body>
    <template>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </template>
    <table>
        <thead>
            <tr>
                <td>번호</td>
                <td>제목</td>
                <td>내용</td>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
    <script src="importNode.js"></script>
</body>
</html>

 

[Javascript]

let temp = document.querySelector('template');
let tbody = document.querySelector('tbody');

//데이터 SET
let db = [
    {'id':'1','title':'title1','content':'content1'},
    {'id':'2','title':'title2','content':'content2'},
    {'id':'3','title':'title3','content':'content3'}
];

//테이블 내용 생성
for (let i = 0; i < db.length; i++) {
    //TR (자식노드 까지 복사)
    let copyAllChild = document.importNode(temp.content,true).firstElementChild;
    copyAllChild.children[0].innerText = db[i].id;
    copyAllChild.children[1].innerText = db[i].title;
    copyAllChild.children[2].innerText = db[i].content;

    tbody.append(copyAllChild);
}

 

[출력 결과 창]

 

document.importNode(복사노드,boolean:자식포함여부) by jinwanseo

 

 

document.importNode(복사할노드, boolean:자식포함여부)는

위와같은 table 생성에 자주 사용되니 꼭 알아둘것!!

 

728x90

댓글