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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值