<input id="Text1" runat="server" type="text" />
<table id="table1"></table>
<input id="Button1" type="button" onclick="return Button1_onclick()" />
 
<script language="javascript" type="text/javascript">
var count = 0;
function Button1_onclick(){var txt1=document.getElementById('Text1');
var table1=document.getElementById('table1');
rowNo=table1.rows.length; 
Tr=table1.insertRow(rowNo);
Tr.id="tr"+count;
Td=Tr.insertCell(0);
Td.id="td"+count;
Td.innerText=txt1.value;
.......count+=1;
}要实现的功能是: 定义了一个文本框,然后点提交的时候把它的内容放入到一个表格中
最后再动态加入一个删除按钮:删除按钮的定义如下:Td2=Tr.insertCell(1);
Td2.innerHTML+='<input onclick="del('+count+')" type="button" value="删 除" />';
再定义一个删除函数:function del(i){
 //data1.deleteRow(i); 
document.getElementById('tr'+i).removeNode();
}
首先根据deleteRow(i),利用传进来的索引i删除,发现不行,因为新增一行,索引就会变化,导致删除的不正确. 然后又采用寻找行ID删除,发现也不行. 也会删除错误. 起先定义好的i在传进del函数的时候是正确的,一旦传入到getElementById('tr'+i)位置后,也会动态发生变化,这到底为什么,而且删除的时候和根据索引删除deleteRow(i)也有区别,即使删除后这一行还存在,只是内容没有了.完全变成空白了(但即使按钮变成空白了,删除按钮的焦点还存在在页面中) ,直到删除下一行时,上一行删除的空白才会消失. 有没有办法像deleteRow那样直接删除行,但不用索引删,而用定义的行ID删除呢?

解决方案 »

  1.   

    Td2.innerHTML+='<input onclick="del(this)" 
    function del(btn){
      
     var tr = btn.parentNode.parentNode;
     var tb=  tr.parentNode;
     tb.removeChild(tr);
      
    }
      

  2.   

    同时想问, 我把这些值放在表格中的话, 之后能放在Session 中供其他页面使用吗?
      

  3.   

    同时想问, 我把这些值放在表格中的话, 之后能放在Session 中供其他页面使用吗?
    =======
    表格中不行,必须放在<textbox或hidden中才可以提交到后台并保存在session 中