动态增加表格的行

如果想在网页里用JS动态增加表格的行,

有一种就是使用table.addRow(),然后再用row.addCell(),然后一个一个创建,创建完一行后,使用table.insertBefore或者appendChild来添加,,

但是这样有一点不好,如果这一行包括不少的列,而且又有CSS,又有事件等,,就麻烦了。。。

所以有一个办法是克隆的办法,就是有一行称为模板行的,将其隐藏起来(例如放在一个隐藏层里即可),然后在使用先用cloneNode(true)把行复制下来,再修改一些必要的属性,然后再用insertBefore等即可哈。。

我有一个是这样做的,因为每一行的几乎相同,只有ID和NAME以及背景色等稍有不同,,所以我这样做了一个

每一行里的ID号NAME包含着一个特殊的字符串_blank_,这个是等会要替换成行号的。。。

function replaceIdName(obj, nIndex)
{ //
 if (obj.id != undefined) {
  obj.id =  replaceIndex(obj.id, nIndex);
  }
 if (obj.name != undefined) {
  obj.name =  replaceIndex(obj.name, nIndex);
  }
}
//-----------------------------------------------------------------------------
function replaceIndex(s, nIndex)
{ //
 if (s !=undefined) {
  s = s.replace(/_blank_/g, String(nIndex));
  }
 return s;
}
//-----------------------------------------------------------------------------
function replaceBackground(s, nIndex)
{ //
 if (nIndex % 2 == 0) {
  s = s.replace(/TextField1/g, "TextField2");
  }
 return s;
}
//-----------------------------------------------------------------------------
function addNewRow(oTable, oRow, oBefore, nIndex)
{ //add a new row according to the row, and insert into the oBefore TR in the table

 //copy the row
 var oNewRow = oRow.cloneNode(true);

 //apply the row
 replaceIdName(oNewRow, nIndex);
 var nRowColor = ((nIndex%2==0) ? color_even : color_odd);
 oNewRow.background = nRowColor;

 //change cells in the row
 for (var i=0; i < oNewRow.childNodes.length; i++) {
  oCell = oNewRow.childNodes[i];
  replaceIdName(oCell, nIndex);
  oCell.innerHTML = replaceIndex(oCell.innerHTML, nIndex);
  //set correct background
  oCell.innerHTML = replaceBackground(oCell.innerHTML);
  }


 //alert(oNewRow.outerHTML);
 oTable.insertBefore(oNewRow, oBefore);
}
//-----------------------------------------------------------------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值