javascript

table 가지고 놀기 insertrow deleterow

새로운 도전을 위한 한걸음 2015. 5. 10. 21:55

<html>
<head>
<title>AddRow, DelRow, CopyRow</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="util.js"></script>
<script language="javascript">
<!--
function insRow() {
 var objTable = document.getElementById("mainTbl");
 var objTBody = document.createElement("TBODY");
 objTable.appendChild(objTBody);
 var lastRow = objTable.rows.length;
 var objRow1 = objTable.insertRow(lastRow);
 var objRow2 = objTable.insertRow(lastRow + 1);

 var objCell1 = objRow1.insertCell();
 var objCell2 = objRow1.insertCell();
 var objCell3 = objRow1.insertCell();
 var objCell4 = objRow1.insertCell();
 var objCell5 = objRow1.insertCell();

 var objCell6 = objRow2.insertCell();
 var objCell7 = objRow2.insertCell();
 var objCell8 = objRow2.insertCell();
 var objCell9 = objRow2.insertCell();

 objCell1.innerHTML = "<input type='checkbox' id='chk'>";
 objCell1.rowSpan = 2;
 objCell2.innerHTML = "<input type='text' id='input1' width='10px'>";
 objCell3.innerHTML = "<input type='text' id='input2' width='10px'>";
 objCell4.innerHTML = "<input type='text' id='input3' width='10px'>";
 objCell5.innerHTML = "<input type='text' id='input4' width='10px'>";
 objCell6.innerHTML = "<input type='text' id='input5' width='10px'>";
 objCell7.innerHTML = "<input type='text' id='input6' width='10px'>";
 objCell8.innerHTML = "<input type='text' id='input7' width='10px'>";
 objCell9.innerHTML = "<input type='text' id='input8' width='10px'>";
}

// delete Row
function delRow() {
 var objTable = document.getElementById("mainTbl");
 var objTBody = objTable.getElementsByTagName("TBODY");
 var lastRow = objTBody.length - 1;

 var chkCnt = checkCount();
    if(chkCnt > 0) {
     if( confirm("Delete Selected Item?") ){
      for(var i = lastRow; i > 0; i--) {
       if(objTBody[i].getElementsByTagName("TR")[0].cells[0].firstChild.checked) objTBody[i].removeNode(true);
      }
     }
    } else {
        alert("Please Select Delete Row.");
        return;
    }
}

function cpyRow() {
 var objTable = document.getElementById("mainTbl");
 var objTBody = objTable.getElementsByTagName("TBODY");
 var lastRow = objTBody.length - 1;

 var chkCnt = checkCount();
    if(chkCnt == 0) {
        alert("Select Copy Row. Please.");
        return;
    } else if(chkCnt > 1) {
        alert("Please Select One Row Only.");
        return;
    } else {
  for(var i = lastRow; i > 0; i--) {
   if(objTBody[i].getElementsByTagName("TR")[0].cells[0].firstChild.checked) {
       var oTbody = searchUpByTagName("TBODY", objTBody[i].getElementsByTagName("TR")[0].cells[0].firstChild);
       var oCloneNode = oTbody.cloneNode(true);
       if(oTbody.nextSibling) objTable.insertBefore(oCloneNode, oTbody.nextSibling);
             else objTable.appendChild(oCloneNode);
   }
  }

  allUnCheck();
    }
}

function chkData() {
 var objTable = document.getElementById("mainTbl");
 var objTBody = objTable.getElementsByTagName("TBODY");
 var lastRow = objTBody.length - 1;

 for(var i = lastRow; i > 0; i--) {
  if(objTBody[i].getElementsByTagName("TR")[0].cells[0].firstChild.checked) {
      var tBodyRow = objTBody[i].getElementsByTagName("TR").length;

            for(var j = 0; j < tBodyRow; j++) {
                var colCnt = objTBody[i].getElementsByTagName("TR")[j].cells.length;

                for(var k = 0; k < colCnt; k++) {
                    var oTagName = objTBody[i].getElementsByTagName("TR")[j].cells[j].firstChild.tagName.toUpperCase();
                    switch (oTagName) {
                        case "INPUT" :
                            alert("input");
                            break;

                    }
                }
            }
  }
 }
}

/**
 * CheckBox Tag Object return Checked Count
 */
function checkCount() {
 var objTable = document.getElementById("mainTbl");
 var objTBody = objTable.getElementsByTagName("TBODY");
 var lastRow = objTBody.length - 1;
 var rtnCnt = 0;

 for(var i = lastRow; i > 0; i--) {
  if(objTBody[i].getElementsByTagName("TR")[0].cells[0].firstChild.checked) rtnCnt++;
 }

 return rtnCnt;
}

/**
 * CheckBox Tag Object return Checked Count
 */
function allCheck() {
 var objTable = document.getElementById("mainTbl");
 var objTBody = objTable.getElementsByTagName("TBODY");
 var lastRow = objTBody.length - 1;
 var rtnCnt = 0;

 for(var i = lastRow; i > 0; i--) {
  objTBody[i].getElementsByTagName("TR")[0].cells[0].firstChild.checked = true;
 }
}

/**
 * CheckBox Tag Object return Checked Count
 */
function allUnCheck() {
 var objTable = document.getElementById("mainTbl");
 var objTBody = objTable.getElementsByTagName("TBODY");
 var lastRow = objTBody.length - 1;
 var rtnCnt = 0;

 for(var i = lastRow; i > 0; i--) {
  objTBody[i].getElementsByTagName("TR")[0].cells[0].firstChild.checked = false;
 }
}

function checkExcute(obj) {
    if(obj.checked) allCheck();
    else allUnCheck();
}

/**
 * The Tag Object search Parent Elements Node from Current Element
 *
 * @param tagName Searching Tag Name
 * @param srcElement Current Element Object
 * @return Searched Node Object
 */
window.searchUpByTagName = function(tagName, srcElement) {
 if(srcElement == null) srcElement = window.event.srcElement;
 if(tagName == null) return null;

 tagName = tagName.toUpperCase();
 var element = srcElement.parentElement;

 while(element != null) {
  if(element.tagName == tagName) return element;

  element = element.parentElement;
 }
}

//-->
</script>
</head>

<body>
<form name="myForm">
<input type="hidden" name="row_cnt">
<table id="mainTbl" width="500" border="1">
<tbody>
<tr height="20px">
 <td width="20%" rowspan="2">
  <input type="checkbox" name="all_chk" onClick="checkExcute(this)">
 </td>
 <td width="20%" align="center">1</td>
 <td width="20%" align="center">2</td>
 <td width="20%" align="center">3</td>
 <td width="20%" align="center">4</td>
</tr>
<tr>
 <td align="center">5</td>
 <td align="center">6</td>
 <td align="center">7</td>
 <td align="center">8</td>
</tr>
</tbody>
</table>
<table id="btnTbl">
<tr align="right">
 <td>
 <input type="button" value="insRow" OnClick="insRow()">
 <input type="button" value="delRow" OnClick="delRow()">
 <input type="button" value="copRow" OnClick="cpyRow()">
 <input type="button" value="chkData" OnClick="chkData()">
 </td>
</tr>
</table>
</form>
</body>
</html>