查看完整版本: [-- 动态增加删除表格记录 --]

风信Java论坛 ›› javascript/html/css 讨论交流中心 ›› 动态增加删除表格记录 登录 -> 注册

1F 动态增加删除表格记录   千山暮雪 Post by : 2009-01-19 16:31:00.0

一个jsp页面中需要为动态地增加删除表格记录

由于是个新手,这颇花了我一些时间:现分享如下

代码在IE6上测试通过: 

   xhtml代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2. <html xmlns="http://www.w3.org/1999/xhtml"> 
  3. <head> 
  4.  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  5.  <title>dynamic add and delete a line from a table!</title> 
  6.  <script type="text/javascript"> 
  7.   var record=1;  
  8.   /*********************  
  9.    * chris Hu:  
  10.    * Add a record into the table  
  11.    *  
  12.    */   
  13.   function addLine(){  
  14.    var tb_body = document.getElementById('tb_body');   
  15.    var line=document.createElement('tr');   
  16.    var cb=document.createElement('td');   
  17.    var name=document.createElement('td');   
  18.    var password=document.createElement('td');   
  19.    var email=document.createElement('td');   
  20.      
  21.    record++;  
  22.    line.id ='tr_'+record;  
  23.      
  24.    cb.innerHTML='<input name="input_cb" id="cb_'+record+'" type="checkBox"/>';   
  25.    name.innerHTML='<input name="input_name" id="name_'+record+'" type="text"/>';  
  26.    password.innerHTML='<input name="input_password" id="password_'+record+'" type="text"/>';  
  27.    email.innerHTML='<input name="input_email" id="email_'+record+'" type="text"/>';  
  28.      
  29.    cb.align='center';  
  30.    line.appendChild(cb);  
  31.    line.appendChild(name);  
  32.    line.appendChild(password);  
  33.    line.appendChild(email);  
  34.    tb_body.appendChild(line);   
  35.   }  
  36.   /*********************  
  37.    *  chris Hu:  
  38.    * Delete the record witch's checkbox is checked   
  39.    * but ensure there's at least one line remained  
  40.    *  
  41.    */    
  42.   function delLine(){  
  43.    var cbList=document.getElementsByName('input_cb');  
  44.    var selecedTR='';  
  45.    for(var i=0;i<cbList.length;i++){  
  46.     if(cbList[i].checked==true){  
  47.      var idName=cbList[i].id;  
  48.      idNameidName=idName.replace(/cb_/ig,"tr_");  
  49.      selecedTR+=idName+',';  
  50.     }  
  51.    }  
  52.    var ary=selecedTR.split(',');  
  53.    if(ary.length-1==cbList.length){  
  54.     alert("ensure there's one record remained!");  
  55.     document.getElementById('selectAll').checked=false;  
  56.     selectAll();  
  57.     return false;  
  58.    }  
  59.    for(var j=0;j<ary.length-1;j++){  
  60.     /*  in ie use this:  
  61.      *  document.getElementById(ary[j]).removeNode(true);  
  62.      * ff the other  
  63.      */  
  64.     document.getElementById(ary[j]).parentNode.removeChild(document.getElementById(ary[j]));  
  65.    }  
  66.    document.getElementById('selectAll').checked=false;  
  67.   }  
  68.   /*********************  
  69.    *  chris Hu:  
  70.    * Select/disselect all the records  
  71.    *  
  72.    */  
  73.   function selectAll(){  
  74.    var cb_all=document.getElementById('selectAll');  
  75.    if(cb_all.checked==true){  
  76.     var cbList=document.getElementsByName('input_cb');  
  77.     for(var i=0;i<cbList.length;i++){  
  78.      cbList[i].checked=true;  
  79.     }  
  80.    }else{  
  81.     var cbListB=document.getElementsByName('input_cb');  
  82.     for(var i=0;i<cbListB.length;i++){  
  83.      cbListB[i].checked=false;  
  84.     }  
  85.    }  
  86.   }  
  87.  </script>   
  88. </head> 
  89.  
  90. <body> 
  91.  <hr width="100%" color="#adedaa"/> 
  92.  <input type="button" value="AddLine" onclick="addLine()"/> 
  93.  <input type="button" value="DelLine" onclick="delLine()"/> 
  94.  <hr width="100%" color="#adedaa"/> 
  95.    
  96.  <div> 
  97.   <table width="50%" border="1" cellspacing="0" cellpadding="0" summary=""> 
  98.    <thead bgcolor="#dafafa"> 
  99.     <tr> 
  100.      <th width="5%"><input type="checkBox" id="selectAll" onclick="selectAll()" /></th> 
  101.      <th width="20%">RegName</th> 
  102.      <th width="20%">PassWord</th> 
  103.      <th width="20%">Email</th> 
  104.     </tr> 
  105.    </thead> 
  106.    <tbody id="tb_body"> 
  107.     <tr id="tr_1"> 
  108.      <td width="5%" align="center"><input name="input_cb" id="cb_1" type="checkBox"/></td> 
  109.      <td width="20%"><input name="input_name" id="name_1" type="text"/></td> 
  110.      <td width="20%"><input name="input_password" id="password_1" type="text"/></td> 
  111.      <td width="20%"><input name="input_email" id="email_1" type="text"/></td> 
  112.     </tr> 
  113.    </tbody> 
  114.    <tfoot bgcolor="#dadada"><tr><td colspan="4">User's information!</td></tr></tfoot> 
  115.   </table> 
  116.  </div> 
  117.  <hr width="100%" color="#adedaa"/> 
  118. </body> 
  119. </html> 
2F    千山暮雪 Post by : 2009-01-19 16:32:10.0
发了之后我发现,这样的格式是完全不能阅读的!
em08
3F    唧唧 Post by : 2009-01-19 17:39:17.0
帮你改了一下,可以直接运行代码了,测了一下,可以新增列,但是不能删除

这方法也有点傻瓜,试试js里面脱离表格的格式,复制表格中已有的其中一行吧,这样就通用了
em01
4F    千山暮雪 Post by : 2009-01-20 11:42:10.0
恩!
谢谢唧唧!

我刚才看了看!
不能删除行,是因为第48行有点错误!
可能是不是因为我复制过来的时候出了错!

上面的问题代码是:

idNameidName=idName.replace(/cb_/ig,"tr_");

正确的代码应该是:

idName=idName=idName.replace(/cb_/ig,"tr_");

我这里的意思是先得到checkBox的id,如cb_1,之后替换成表格行的id,这就该是tr_1!



em19

我现在要用唧唧的方法了!
5F    千山暮雪 Post by : 2009-01-20 11:43:08.0
再抱歉!

em01em01

风信Java论坛 ›› javascript/html/css 讨论交流中心 ›› 动态增加删除表格记录 登录 -> 注册

查看完整版本: [-- 动态增加删除表格记录 --]
CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1 Processed in 34 ms,0 (Queries)  Gzip enabled
粤ICP备07511478号