首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

关于JS动态添加删除表格行的有关问题 请各位多多帮忙

2012-03-23 
关于JS动态添加删除表格行的问题 请各位多多帮忙这是我从网上找的代码,然后自己改了一些:scriptlanguage

关于JS动态添加删除表格行的问题 请各位多多帮忙
这是我从网上找的代码,然后自己改了一些:
    <script       language= "javascript ">      
    function       get_Element(the_ele,the_tag){      
    the_tag       =       the_tag.toLowerCase();      
    if(the_ele.tagName.toLowerCase()==the_tag)      
    return       the_ele;      
    while(the_ele=the_ele.offsetParent){      
    if(the_ele.tagName.toLowerCase()==the_tag)      
    return       the_ele;      
    }      
    return(null);      
    }      
       
    function       add_Row(the_table)       {      
    var       the_row,the_cell;      
    var       cur_rows=the_table.rows.length;      
    the_row=cur_rows==null?-1:(cur_rows);      
    var       i=the_row-1;      
    var       newrow=the_table.insertRow(i);//得到插入位置      
    the_cell=newrow.insertCell(0);      
    the_cell.innerHTML= " <center       > 收件人 "+i;      
    the_cell=newrow.insertCell(1);      
    the_cell.innerHTML= " <center       > <input       name=A "+i+ "       type=text       size=13> ";          
    the_cell=newrow.insertCell(2);      
    the_cell.innerHTML= " <center       > <INPUT       type=button       value=删除           onclick=del_row(myTable)> ";      
        }      
       
    function       del_row(the_table){      
        var       the_cell;      
    the_cell=get_Element(event.srcElement, "td ");      
    var       index=the_cell.parentElement.rowIndex;      
    if(the_cell==null)       return;      
    if(the_table.rows.length==1)       return;      
    the_table.deleteRow(index);      
       
    var       cell1= ' ';      
    var       cell2= ' ';      
    for(var       i=1;i <document.getElementById( 'myTable ').rows.length-2;i++)      
    {      
        try      
              {      
                    cell1=document.getElementById( 'myTable ').rows[i].cells[0];                  


                    cell2=document.getElementById( 'myTable ').rows[i+1].cells[0];              
                                                                                                           
                              if(parseInt(cell2.innerText)!=(parseInt(cell1.innerText)+1))      
                              {      
                                                                                                                       
                                                        cell2.innerText=(parseInt(cell1.innerText)+1);      
                                                        cell2.style.textAlign= 'center ';      
                                }      
                }      
          catch(e)      
          {      
                  alert(e.discription);      
          }      
       
    }      
    }    
    </script>
    <body>
    <form   method= "post "   name= "form1 "   action= "jsp.jsp "   onSubmit= " ">
        <table           id= "myTable "       width= "100% "       border= "1 "       cellpadding= "4 "       cellspacing= "1 "       >      
                                            <tr       class= "TdContent ">      
                                                    <td       > <div       align= "center "> 序号 </div> </td>      


                                                    <td       > <div       align= "center "> A </div> </td>      
                                                    <td       > <div       align= "center "> B </div> </td>      
                                            </tr>      
                                            <tr       class= "TdContent ">      
                                                    <td> <div       align= "center "> 1 </div> </td>      
                                                    <td> <div       align= "center ">      
                                                            <input       name= "A "       type= "text "       size= "13 "       >      
                                                    </div> </td>      
                                                    <td> <div       align= "center ">      
                                                            <input       name= "B "       type= "text "       size= "13 "       >      
                                                    </div> </td>      
                                            </tr>      
                                            <tr       class= "TdContent ">      


                                                    <td       colspan= "3 "       align= "center "> <input           type= "button "       value= "添加一行 "               class= "ButtonStyle "       onClick= "add_Row(myTable) "> </td>      
                                            </tr>      
                            </table>
        <input   type= "submit "   name= "Submit "   value= "发送 ">
    </form>
    </body>
现在我可以添加也可以删除行,但是有一个问题,比如说我添加完3个(   1   收件人2   收件人3   ),我删除其中一个,前面的序号就都会变成(   1   2   )而不是(1   收件人2   ),其实我是想做成(   收件人1   收件人2   收件人3   )的   ,但是如果把table里的序号下的1改成收件人1,它会出错。请问这个怎么改?!
其实这个不改也行,关键还有一个问题是我现在要在另一个页面里获值,添加多少我就需要在另一个页面里获取多少值,比如说:我现在添加3个,删除第2个后,前面的序列号是变成(   1   2   )里,但是序号2对应的文本框的name却是A3,这个怎么改啊?我想在删除2的时候,不仅仅是把3的序号变成2,还要把3所对应的文本框的name也变成A2,这个怎么做?
在JS方面我很菜,请各位多多帮忙,谢谢了   !

[解决办法]
<script language= "javascript ">
function get_Element(the_ele,the_tag){
the_tag = the_tag.toLowerCase();
if(the_ele.tagName.toLowerCase()==the_tag)
return the_ele;
while(the_ele=the_ele.offsetParent){
if(the_ele.tagName.toLowerCase()==the_tag)
return the_ele;
}
return(null);
}

function add_Row(the_table) {
var the_row,the_cell;
var cur_rows=the_table.rows.length;
the_row=cur_rows==null?-1:(cur_rows);
var i=the_row-1;
var newrow=the_table.insertRow(i);//得到插入位置
the_cell=newrow.insertCell(0);
the_cell.innerHTML= " <center > 收件人 "+i;
the_cell=newrow.insertCell(1);
the_cell.innerHTML= " <center > <input name=A "+i+ " type=text size=13> ";
the_cell=newrow.insertCell(2);
the_cell.innerHTML= " <center > <INPUT type=button value=删除 onclick=del_row(myTable)> ";
alert(the_table.rows.length);
}

function del_row(the_table){
var the_cell;
the_cell=get_Element(event.srcElement, "td ");
var index=the_cell.parentElement.rowIndex;
if(the_cell==null) return;
if(the_table.rows.length==1) return;
the_table.deleteRow(index);

var cell1= ' ';
var cell2= ' ';
for(var i=1;i <document.getElementById( 'myTable ').rows.length-2;i++)
{
try
{
cell1=document.getElementById( 'myTable ').rows[i].cells[0];
cell2=document.getElementById( 'myTable ').rows[i+1].cells[0];
cell22=document.getElementById( 'myTable ').rows[i+1].cells[1];
if(parseInt(cell2.innerText)!=(parseInt(cell1.innerText)+1))
{
s=cell1.innerText.replace( "收件人 ", " ");


cell2.innerText= "收件人 "+(parseInt(s-0)+1);
cell2.style.textAlign= 'center ';
cell22.innerHTML= " <center > <input name=A "+(i+1)+ " type=text size=13> ";
alert(cell22.innerHTML);
}
}
catch(e)
{
alert(e.discription);
}

}
}
</script>
<body>
<form method= "post " name= "form1 " action= "jsp.jsp " onSubmit= " ">
<table id= "myTable " width= "100% " border= "1 " cellpadding= "4 " cellspacing= "1 " >
<tr class= "TdContent ">
<td > <div align= "center "> 序号 </div> </td>
<td > <div align= "center "> A </div> </td>
<td > <div align= "center "> B </div> </td>
</tr>
<tr class= "TdContent ">
<td> <div align= "center "> 1 </div> </td>
<td> <div align= "center ">
<input name= "A " type= "text " size= "13 " >
</div> </td>
<td> <div align= "center ">
<input name= "B " type= "text " size= "13 " >
</div> </td>
</tr>
<tr class= "TdContent ">
<td colspan= "3 " align= "center "> <input type= "button " value= "添加一行 " class= "ButtonStyle " onClick= "add_Row(myTable) "> </td>
</tr>
</table>
<input type= "submit " name= "Submit " value= "发送 ">
</form>
</body>

[解决办法]
你需要在插入和删除完某行以后再来取得这个值
或者直接在提交之前来获得这个表格的行数

热点排行