반응형
|
Javascript 를 이용한 동적테이블 구성 |
|
개발환경 : InternetExplorer 7.0, window XP |
이번글에서는 DOM 을 이용해서 테이블의 행을 동적으로 추가, 삭제
해 볼것이다. 여러가지 쓰임이 많고 응용 범위가 넓기 때문에
간단하게 정리했다. 브라우저에 종속적인 코드들이 있어서 다룰 내용이
많지만 이번에는 익스플로어 에서만 테스트 한 내용을 올린다. 크롬이나
파이어 폭스에서는 이후 공통적으로 사용할수 있는 소스를 만들어
개제할 예정이다.
동적으로 테이블의 내용을 추가하는 방법에는 두가지가 있는데
DOM 의 appendChild 함수를 이용해 개체에 자식 요소를 추가하는 것이다.
추가할 자식요소는 var oDiv = document.createElement(‘DIV’) 로 생성하고
document.body.appendChild(oDiv); 처럼 원하는 개체에 appendChild 를
이용해 추가하면 된다.
|
(1) appendChild 를 이용한 방법 |
간단한 예제를 추가하였는데 UL 에 LI 태그를 집어 넣는 내용이다.
<SCRIPT>
function appChild(){
if (oList.all.length<6){
var oNewNode=document.createElement('LI');
oList.appendChild(oNewNode);
oNewNode.innerText='항목 번호 '+oList.all.length;
}
}
</SCRIPT>
<UL id=oList>
<LI>항목 번호 1
<LI>항목 번호 2
</UL>
<INPUT type="button" value="자식 개체 추가" onclick="appChild()">
appendChild 를 이용한 예제를 하나 더 소개한다. 이것은 좀더 상세한
제어를 한 내용이다. 그 내용을 보자면 tr과 td 개체를 생성하고
각 개체들의 속성값을 셋팅하였다.
var tr = document.createElement("tr");
tr.setAttribute("bgColor", "#FFFFCC"); // 배경색
tr.setAttribute("height", "30"); // 높이
그리고 tr 에 td를 추가하고 tr 은 table 개체에 추가하였다
<html>
<head>
<title></title>
<script language="javascript">
function Add() {
var table1 = document.getElementById("insertTable");
// tr 개체를 얻어와 속성값을 조절한다.
var tr = document.createElement("tr");
tr.setAttribute("bgColor", "#FFFFCC"); // 배경색
tr.setAttribute("height", "30"); // 높이
var td1 = document.createElement("td");
td1.setAttribute("width", "100"); // 넓이
td1.innerText = document.all.txtHome.value;
var td2 = document.createElement("td");
td2.setAttribute("width", "200"); // 넓이
td2.innerText = document.all.txtAway.value;
tr.appendChild(td1);
tr.appendChild(td2);
// 초기에 보여주는' 내용이 없습니다' 행을 지운다.
if (table1.firstChild.lastChild.childNodes.length == 1)
table1.firstChild.removeChild(table1.firstChild.lastChild);
// 입력된값을 넣은 tr 개체를 추가한다.
table1.firstChild.appendChild(tr);
}
</script>
</head>
<body>
<h3>경기</h3>
<table border="1" width="300" id="insertTable">
<tr>
<th width="100">홈팀</th>
<th width="200">원정팀</th>
</tr>
<tr>
<td align="center" colspan="2">내용이 없습니다</td>
</tr>
</table>
<br/>
홈팀 :
<input type="text" size="10" name="txtHome" />원정팀 :
<input type="text" size="10" name="txtAway" />
<button onclick="Add();">추가하기</button>
</body>
</html>
|
(2) innerHTML 을 이용한 방법 |
두번째는 innerHTML 을 이용한다. 넣을 내용을 구성한뒤 innerHTML
변수에 대입하면 된다.
<html>
<script>
var rowIndex = 1;
function addFile(form,k){
if(rowIndex > (5-k)) return false;
var oCurrentRow,oCurrentCell;
var sAddingHtml;
oCurrentRow = insertTable.insertRow();
rowIndex = oCurrentRow.rowIndex;
oCurrentCell = oCurrentRow.insertCell();
rowIndex++;
var strHTML = "<tr align='center'>";
strHTML += "<td width='50'>"+ rowIndex +"</td>";
strHTML += "<td colspan=3 width='60'><INPUT class=input TYPE=FILE NAME='filename" +rowIndex + "' size=25></td>";
strHTML += "</tr>";
oCurrentCell.innerHTML = strHTML;
form.rowCount.value = rowIndex;
}
//첨부파일 삭제
function deleteFile(form){
if(rowIndex<2){
return false;
}else{
form.rowCount.value = form.rowCount.value - 1;
rowIndex--;
insertTable.deleteRow(rowIndex);
}
}
</script>
<body>
<form name="write">
<table name='insertTable' id='insertTable' border=0 cellpadding=0 cellspacing=0>
</table>
<input type="button" value="추가" onClick="addFile(write,1)" border=0 style='cursor:hand'>
<input type="button" value="삭제" onClick='deleteFile(write)' border=0 style='cursor:hand'>
<input type="hidden" name="rowCount" value="1">
</form>
</body>
</html>
반응형
'웹 프로그래밍 > 자바스크립트' 카테고리의 다른 글
| javascript 개발을 위한 Visual Web Developer 2010 Express 설치 (0) | 2012.10.22 |
|---|---|
| Javascript 자바스크립트에서 배열사용하여 프로그램하기 (0) | 2012.09.19 |
| 자바스크립트를 개발하기 위한 에디터 종류 (1) | 2012.09.15 |
| Javascript 에서 jQuery API 를 이용한 버튼이벤트시 레이어 새창으로 표현 (0) | 2012.03.18 |
| javascript 에서 input 값에 숫자이외의 글 입력막기 (0) | 2010.11.19 |
| javascript 의 showModalDialog 사용해서 새창 제어하기 (1) | 2010.08.07 |
| 자식창과 부모창의 관계, iframe 내부와 메인페이지와의 관계제어 (5) | 2009.09.15 |
| Ajax 라이브러리 Dojo 에서 브라우저의 뒤로 /앞으로 가기 지원 (0) | 2009.07.05 |

