javascript中对表格的操作:创建表格 删除行 删除列 交换行 交换列

来源:岁月联盟 编辑:exp 时间:2012-03-20

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>Insert title here</title>
  <style type="text/css">
   input[type=text]{
    width:30px;
   }
  </style>
  <script type="text/javascript">
   /*
    * javascript中对表格的操作:创建表格 删除行 删除列 交换行 交换列
    */
   function creatTable(){
    //获取页面中原有的table
    var oldTable = document.getElementsByTagName("table")[0];
    if(oldTable != null)
     document.body.removeChild(oldTable);
    // 获取行数和列数
    var rows = document.getElementById("creatRows").value;
    var cols = document.getElementById("creatCols").value;
    document.getElementById("creatRows").value = "";
    document.getElementById("creatCols").value = "";
   
    //创建Table标签,设置属性
    var table = document.createElement("table");
    table.setAttribute("border", "1");
    table.setAttribute("align", "center");
    table.setAttribute("width", "50%");
    table.setAttribute("cellpadding", "5");
    table.setAttribute("cellspacing", "0");
    //alert(table);
   
    //创建Tbody,添加到table中
    var tbody = document.createElement("tbody");
    table.appendChild(tbody);
   
    for(var i = 1; i <= rows; i++){
     //创建tr,添加到tbody中
     var tr = document.createElement("tr");
     tbody.appendChild(tr);
    
     for(var j = 1; j <= cols; j++){
      //创建td,设置td的文本,添加到tr中
      var td = document.createElement("td");
      td.innerHTML = i + ", " + j;
      tr.appendChild(td);
     }
    }
   
    //将table装入body中
    document.body.appendChild(table);
   
   }
  
   function deleteRow(){
    //获取行号
    var rows = document.getElementById("deleteRows").value;
    document.getElementById("deleteRows").value = "";
   
    //获取页面中要删除的那个tr,如果不存在,给个提示
    var tr = document.getElementsByTagName("tr")[rows - 1];
    if(tr == null){
     alert("要删除的不存在!");
     return;
    }
    //将tr删除
    tr.parentNode.removeChild(tr);
   }
  
   function deleteCol(){
    //获取要删除的列数,删除后,清空text的值
    var cols = document.getElementById("deleteCows").value;
    document.getElementById("deleteCows").value = "";
   
    //获取所有的tr,删除每个tr中的cols列
    var trARR = document.getElementsByTagName("tr");
    for(var i = 0; i < trARR.length; i++){
     var td = trARR[i].childNodes[cols - 1];
     trARR[i].removeChild(td);
    }
   }
  
   function swapRow(){
    //获取要交换的行号
    var row1 = document.getElementById("swapRow1").value;
    var row2 = document.getElementById("swapRow2").value;
    document.getElementById("swapRow1").value ="";
    document.getElementById("swapRow2").value = "";
   
    //获取要交换的tr
    var trArr = document.getElementsByTagName("tr");
    var tr1 = trArr[row1 - 1];
    var tr2 = trArr[row2 - 1];
   
    //使用javascript写好的交换方法
    //tr1.swapNode(tr2);
   
    var cloneTr = tr1.cloneNode(true); //交换位置,交换会失败,替换后,会少一行
    tr2.parentNode.replaceChild(cloneTr, tr2); //???
    tr1.parentNode.replaceChild(tr2, tr1);
   
   }
  
   function swapCol(){
    // 获取要交换的列号
    var cols1 = document.getElementById("swapCol1").value;
    var cols2 = document.getElementById("swapCol2").value;
    document.getElementById("swapCol1").value = "";
    document.getElementById("swapCol2").value = "";
   
    // 获取所有TR, 循环遍历所有TR
    var trArr = document.getElementsByTagName("tr");
    for(var x = 0; x < trArr.length; x++) {
     // 获取要交换的TD
     var td1 = trArr[x].childNodes[cols1 - 1];  // 获取TR的所有子节点
     var td2 = trArr[x].cells[cols2 - 1];   // 获取TR中所有单元格
    
     // 交换
     td1.swapNode(td2);
    }
   }
  </script>
    </head>
    <body>
     创建的行数:<input type="text" id="creatRows"><br>
  创建的列数:<input type="text" id="creatCols"><br>
  <input type="button" value="创建表格" onclick="creatTable()"><br>
  <br>
  要删除的行:<input type="text" id="deleteRows"><input type="button" value="删除行" onclick="deleteRow()"><br>
  要删除的列:<input type="text" id="deleteCows"><input type="button" value="删除列" onclick="deleteCol()"><br>
  <br>
  要交换的行:<input type="text" id="swapRow1">, <input type="text" id="swapRow2"><input type="button" value="交换行" onclick="swapRow()"><br>
  要交换的列:<input type="text" id="swapCol1">, <input type="text" id="swapCol2"><input type="button" value="交换列" onclick="swapCol()"><br>
    </body>
</html>


 

摘自  代俊建的专栏