HTML DOM의 insertRow() 메서드는 HTML 문서의 테이블에 빈 <tr>(행) 요소를 생성하여 추가하는 기능을 합니다. 자바스크립트만으로 동적으로 테이블에 새로운 행을 삽입할 수 있어, 데이터 목록을 실시간으로 갱신해야 하는 웹 애플리케이션에서 매우 유용하게 활용됩니다.
문법(Syntax)
insertRow() 메서드의 기본 문법은 다음과 같습니다.
object.insertRow(index)
여기서 index는 행이 삽입될 위치를 지정하는 숫자입니다.
- index를 생략하거나 -1을 지정하면: 테이블의 마지막에 새 행이 추가됩니다.
- index를 지정하면: 해당 위치에 새 행이 삽입되고, 기존 행들은 뒤로 밀려납니다.
예제(Example)
버튼을 클릭하면 테이블의 두 번째 위치(인덱스 1)에 새로운 행이 삽입되는 예제입니다.
<!DOCTYPE html>
<html>
<style>
body {
color: #000;
background: lightblue;
height: 100vh;
text-align: center;
}
table {
margin: 2rem auto;
}
caption {
color: #db133a;
}
.btn {
background: #db133a;
border: none;
height: 2rem;
border-radius: 2px;
width: 40%;
display: block;
color: #fff;
outline: none;
cursor: pointer;
margin: 1rem auto;
}
.show {
font-size: 1.2rem;
}
</style>
<body>
<h1>DOM Table insertRow() Method Demo</h1>
<table border="2">
<tr>
<td>Name</td>
<td>Roll No.</td>
</tr>
<tr>
<td>John</td>
<td>071717</td>
</tr>
<tr>
<td>Jane</td>
<td>031717</td>
</tr>
</table>
<button onclick="create()" class="btn">Create Row</button>
<script>
function create() {
var table = document.querySelector('table');
var tableRow = table.insertRow(1);
tableRow.innerHTML = "<td>Maximilian</td><td>081717</td>";
}
</script>
</body>
</html>코드 설명
위 예제의 핵심 로직은 다음과 같습니다.
document.querySelector('table')로 문서에서 첫 번째 테이블 요소를 선택합니다.table.insertRow(1)을 호출하여 인덱스 1, 즉 헤더 행 바로 아래에 빈<tr>요소를 생성합니다.innerHTML속성을 이용해 새로 만든 행 안에 이름(Maximilian)과 학번(081717) 셀 두 개를 채워 넣습니다.
실행 결과(Output)
페이지를 실행하면 학생 명단이 담긴 테이블과 'Create Row' 버튼이 화면에 나타납니다.

'Create Row' 버튼을 클릭하면 테이블의 두 번째 행 위치에 Maximilian의 정보가 담긴 새로운 행이 즉시 추가됩니다.

참고 사항
새로 삽입된 행은 기본적으로 비어 있으므로, 위 예제처럼 innerHTML로 내용을 채우거나 insertCell() 메서드를 사용해 셀을 하나씩 추가하는 방식도 함께 활용할 수 있습니다. 또한 insertRow()는 반환값으로 새로 생성된 <tr> 요소를 돌려주기 때문에, 이 값을 변수에 저장해 스타일 지정이나 이벤트 바인딩 등 추가 작업을 진행하기에도 편리합니다.