JavaScript操作Table:添加、修改、删除Table元素

方法一:DOM实现

//先获取该表格的引用:
var Container = document.getElementById(TableId);

//然后创建行(TR对象)
var NewTr = document.createElement("tr");

//填充该表格行
var NewTd1 = document.createElement("td");
var NewTd2 = document.createElement("td");
......
NewTr.appendChild(NewTd1);
NewTr.appendChild(NewTd2);
...... 
下面要做的是继续填充新建好的单元格
另外一种填充表格行的方式是
NewTr.innerHTML = " ........ ";

接下来,要在DOM树中指定NewTr的父节点,

在表格的DOM中,TR的父结点应该是TBODY这个几乎被遗忘的对象.

var LastTr = Container.rows[Container.rows.length - 1];
LastTr.parentNode.appendChild(NewTr);

 

 

通常来讲,从表格中删除某一行一般是通过表格的deleteRow()方法和行的rowIndex属性来删除,如下,欲删除刚刚添加的新行:

var Container = document.getElementById(TableId);
var LastTrIndex = Container.rows.length - 1; // 表格最后一行
Container.deleteRow(LastTrIndex);

 

例子:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3. <HEAD>  
  4. <TITLE>动态表格</TITLE>  
  5. <META NAME="Generator" CONTENT="EditPlus">  
  6. <META NAME="Author" CONTENT="">  
  7. <META NAME="Keywords" CONTENT="">  
  8. <META NAME="Description" CONTENT="">  
  9. <script type="text/javascript">  
  10.   
  11. function addOneRow(){  
  12.   //判断是否传入足够参数  
  13.  if(arguments.length <= 1 ){  
  14.   return "error";  
  15.  }  
  16.  try{  
  17.   //获取table句柄  
  18.   var tb=document.getElementById(arguments[0]);  
  19.   //添加一行  
  20.   var newTr = tb.insertRow();  
  21.   for(var i=1 ;i < arguments.length;i++){    
  22.    //添加一列  
  23.    var newTd = newTr.insertCell();  
  24.    newTd.innerHTML = arguments[i];   
  25.   }  
  26.  }catch (e) {  
  27.   return e.toString();  
  28.  }  
  29.  return "true";  
  30. }  
  31.   
  32. function deleteOneRow(){  
  33.   //判断是否传入足够参数  
  34.  if(arguments.length == 0){  
  35.   return "error";  
  36.  }  
  37.  var thisTag = arguments[0];  
  38.  try{  
  39.   //获取句柄  
  40.   var obj = getThisObj(thisTag);   
  41.   //寻找最靠近的table  
  42.   while (obj.nodeName.toUpperCase() != 'TABLE'){    
  43.    objobj =obj.parentElement;    
  44.   }   
  45.   //删除一行  
  46.   var newTr = obj.deleteRow(getTrRowOfTable(thisTag));   
  47.  }catch (e) {  
  48.   return e.toString();  
  49.  }  
  50.  return "true";  
  51. }  
  52.   
  53. function getTableMaxRow(){  
  54.  //判断是否传入足够参数  
  55.  if(arguments.length == 0 ){  
  56.   return "error";  
  57.  }  
  58.  try{  
  59.   //获取句柄  
  60.   var obj = getThisObj(arguments[0]);   
  61.   //寻找最靠近的table  
  62.   while (obj.nodeName.toUpperCase() != 'TABLE'){    
  63.    objobj =obj.parentElement;    
  64.   }  
  65.   return obj.rows.length;  
  66.  }catch (e) {  
  67.   return e.toString();  
  68.  }  
  69. }  
  70.   
  71. function getTrRowOfTable(){  
  72.  //判断是否传入足够参数  
  73.  if(arguments.length == 0 ){  
  74.   return "error";  
  75.  }  
  76.  try{  
  77.   //获取传入标签的句柄  
  78.   var obj = getThisObj(arguments[0]);   
  79.   //寻找最靠近的TR  
  80.   while (obj.nodeName.toUpperCase() != 'TR'){    
  81.    objobj =obj.parentElement;    
  82.   }  
  83.   //返回TR的行号   
  84.   return obj.rowIndex;  
  85.  }catch (e) {  
  86.   //返回异常信息  
  87.   return e.toString();  
  88.  }  
  89. }  
  90.   
  91. //获取指定标签的句柄  
  92. function getThisObj(){  
  93.  var obj;  
  94.  //若定义了id  
  95.  if(arguments[0].id != ""){  
  96.   obj=document.getElementById(arguments[0].id);  
  97.   return obj;  
  98.  }   
  99.  //若定义了name  
  100.  if(arguments[0].name != ""){  
  101.   //通过name取句柄得到的是个数组,所以必须保证该name页面唯一  
  102.   obj=document.getElementsByName(arguments[0].name)[0];    
  103.   return obj;  
  104.  }  
  105. }  
  106.   
  107. function showInfo(){  
  108.  //显示本行号  
  109.  alert("当前行号为:"+ getTrRowOfTable(arguments[0]));  
  110.  //显示总行数  
  111.  alert("总行数为:"+ getTableMaxRow(arguments[0]));  
  112. }  
  113.   
  114.   
  115. var rowId=1;  
  116. function addRow(){  
  117.  var tagStr="<input type=text value=ccc name="+rowId+" onclick='addRow();showInfo(this)' onchange='deleteOneRow(this);'>";  
  118.  addOneRow("tb",tagStr);  
  119.  rowId++;  
  120. }  
  121. </script>  
  122. </HEAD>  
  123. <BODY onload="addRow();">  
  124.  <table id="tb"></table>  
  125. </BODY>  
  126. </HTML>  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值