方法一: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);
例子:
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
- <HTML>
- <HEAD>
- <TITLE>动态表格</TITLE>
- <METANAME="Generator"CONTENT="EditPlus">
- <METANAME="Author"CONTENT="">
- <METANAME="Keywords"CONTENT="">
- <METANAME="Description"CONTENT="">
- <scripttype="text/javascript">
- functionaddOneRow(){
- //判断是否传入足够参数
- if(arguments.length<=1){
- return"error";
- }
- try{
- //获取table句柄
- vartb=document.getElementById(arguments[0]);
- //添加一行
- varnewTr=tb.insertRow();
- for(vari=1;i<arguments.length;i++){
- //添加一列
- varnewTd=newTr.insertCell();
- newTd.innerHTML=arguments[i];
- }
- }catch(e){
- returne.toString();
- }
- return"true";
- }
- functiondeleteOneRow(){
- //判断是否传入足够参数
- if(arguments.length==0){
- return"error";
- }
- varthisTag=arguments[0];
- try{
- //获取句柄
- varobj=getThisObj(thisTag);
- //寻找最靠近的table
- while(obj.nodeName.toUpperCase()!='TABLE'){
- objobj=obj.parentElement;
- }
- //删除一行
- varnewTr=obj.deleteRow(getTrRowOfTable(thisTag));
- }catch(e){
- returne.toString();
- }
- return"true";
- }
- functiongetTableMaxRow(){
- //判断是否传入足够参数
- if(arguments.length==0){
- return"error";
- }
- try{
- //获取句柄
- varobj=getThisObj(arguments[0]);
- //寻找最靠近的table
- while(obj.nodeName.toUpperCase()!='TABLE'){
- objobj=obj.parentElement;
- }
- returnobj.rows.length;
- }catch(e){
- returne.toString();
- }
- }
- functiongetTrRowOfTable(){
- //判断是否传入足够参数
- if(arguments.length==0){
- return"error";
- }
- try{
- //获取传入标签的句柄
- varobj=getThisObj(arguments[0]);
- //寻找最靠近的TR
- while(obj.nodeName.toUpperCase()!='TR'){
- objobj=obj.parentElement;
- }
- //返回TR的行号
- returnobj.rowIndex;
- }catch(e){
- //返回异常信息
- returne.toString();
- }
- }
- //获取指定标签的句柄
- functiongetThisObj(){
- varobj;
- //若定义了id
- if(arguments[0].id!=""){
- obj=document.getElementById(arguments[0].id);
- returnobj;
- }
- //若定义了name
- if(arguments[0].name!=""){
- //通过name取句柄得到的是个数组,所以必须保证该name页面唯一
- obj=document.getElementsByName(arguments[0].name)[0];
- returnobj;
- }
- }
- functionshowInfo(){
- //显示本行号
- alert("当前行号为:"+getTrRowOfTable(arguments[0]));
- //显示总行数
- alert("总行数为:"+getTableMaxRow(arguments[0]));
- }
- varrowId=1;
- functionaddRow(){
- vartagStr="<inputtype=textvalue=cccname="+rowId+"onclick='addRow();showInfo(this)'onchange='deleteOneRow(this);'>";
- addOneRow("tb",tagStr);
- rowId++;
- }
- </script>
- </HEAD>
- <BODYonload="addRow();">
- <tableid="tb"></table>
- </BODY>
- </HTML>