JS修改Table中Td的值

Html代码   收藏代码
  1. <html>  
  2. <script language="javascript">  
  3.   
  4. //为每个Td添加双击事件  
  5. function ReWritable()  
  6. {  
  7.     var tbmian=document.getElementById("tbmain");  
  8.     //循环,为每行每列添加双击事件,但是,第一行(thead)与最后一行(tfoot)不添加。  
  9.     for(var i=1;i<tbmain.rows.length-1;i++)  
  10.     {  
  11.         for(var j=1;j<tbmain.rows[i].cells.length;j++)//第一列不添加  
  12.         {  
  13.             tbmain.rows[i].cells[j].ondblclick=TdDoubleClick;  
  14.         }  
  15.     }  
  16. }  
  17. //定义td的双击事件,为其添加文本框,使用用户可以输入。  
  18. function TdDoubleClick()  
  19. {             
  20.                 getOldChange();//添加旧的数据oldRecord  
  21.     //首先判断是不是该方格已经存在文本框,如果存在,则返回,不重复添加文本框。如果不存在,则添加。  
  22.         var tdcag=document.getElementById("tdcag");  
  23.         var tdid=null;  
  24.         var txtid=null;  
  25.         //var curtd=window.event.srcElement;//就是指向触发事件的元素,他是什么就有什么的属性  
  26.         if(tdcag!=null)//已经存在,返回。  
  27.         {  
  28.             return;  
  29.         }  
  30.     //不存在,则添加  
  31.     tdid=window.event.srcElement;//就是指向触发事件的元素,他是什么就有什么的属性  
  32.     tdtxt=tdid.innerText;  
  33.     tdtxt=Trim(tdtxt);  
  34.     var str="<div id='tdcag'><input type='text' οnblur='ChangeTdText();' id='txtId' value='"+tdtxt+"'>";  
  35.     str+="<input type='hidden' id='tdInitValue' value='"+tdtxt+"'>";  
  36.     str+="</div>";  
  37.     tdid.innerHTML=str;  
  38.     //使文本框获得焦点。          
  39.     document.getElementById("txtId").focus();  
  40.     var ctr=document.getElementById("txtId").createTextRange();//  
  41.     ctr.collapse(false);//将插入点移动到当前范围的开始或结尾。  
  42.     ctr.select();  
  43. }  
  44. //去除字符串前后的空格。  
  45. function   Trim(str)  
  46. {  
  47.     return   str.replace(/(^\s*)|(\s*$)/g,   "");  
  48. }  
  49. //定义KeyPress按下时的事件,如果是ESC键,则取消更改,恢复为更改前的值。  
  50. document.onkeypress = function EscKeyPress()  
  51. {  
  52.     if(event.keyCode==27)  
  53.     {  
  54.         CancelTdChanged();  
  55.         return;  
  56.     }  
  57. }  
  58. //取消更改,  
  59. function CancelTdChanged()  
  60. {  
  61.     var tdInitValue=document.getElementById("tdInitValue");  
  62.     var tdtxt=tdInitValue.value;  
  63.     var tdid=document.getElementById("tdcag").parentNode;  
  64.     tdid.innerText=Trim(tdtxt);  
  65.     getNewChange();//添加新的数据(未更改)  
  66. }  
  67. //确定更改,  
  68. function ChangeTdText()  
  69. {  
  70.           
  71.     var txtId=document.getElementById("txtId");  
  72.     if(txtId==null)  
  73.     {  
  74.         return;  
  75.     }  
  76.     var tdid=document.getElementById("tdcag").parentNode;  
  77.     tdid.innerText=Trim(txtId.value);  
  78.    // alert(rowID);  
  79.    getNewChange();//添加新的数据(已更改)  
  80.       
  81.     return;  
  82. }  
  83. var changeID=0;  
  84. var rowID;  
  85. var changeArr=new Array();  
  86. var oldRecord=new Array();  
  87. var newnewRecord=new Array();  
  88.   
  89. function show(){  
  90.     compare()  
  91.     var otstr="<table border='1'>";  
  92.     var ojstr="{check:[";  
  93.     var ntstr="<table border='1'>";  
  94.     var njstr="{check:[";  
  95.     for( var i=0;i<changeArr.length;i++){  
  96.         otstr+=oldRecord[i];  
  97.         ojstr+=changeToJson(oldRecord[i])+",";  
  98.         ntstr+=newRecord[i];  
  99.         njstr+=changeToJson(newRecord[i])+",";        
  100.     }  
  101.     ojstr+="]}";  
  102.     njstr+="]}";  
  103.     otstr+="</table>";  
  104.     ntstr+="</table>";  
  105.       
  106.     ojstrojstr=ojstr.replace(/,]}/g,"]}");  
  107.     njstrnjstr=njstr.replace(/,]}/g,"]}");  
  108.     var contain=document.getElementById("div2");   
  109.     contain.innerHTML=otstr+"\n"+ojstr+"\n";  
  110.     var contain=document.getElementById("divnew");   
  111.     contain.innerHTML=ntstr+"\n"+njstr;    
  112. }  
  113.   
  114. function compare(){//去除修改的数据(又该回原值)  
  115.     for( var i=0;i<changeArr.length;i++){  
  116.     //alert(oldRecord[i]+"/"+newRecord[i]);  
  117.         if(oldRecord[i]==newRecord[i]){  
  118.             changeArr[i]="";  
  119.             oldRecord[i]="";  
  120.             newRecord[i]="";  
  121.               
  122.         }  
  123.     }  
  124. }  
  125. function changeToJson(str){  
  126.     if(str==undefined)  
  127.         return;  
  128.     strstr=str.replace(/<tr>/g,"{");  
  129.     strstr=str.replace(/<\/tr>/g,"}");  
  130.     strstr=str.replace(/<td>/g,"");  
  131.     strstr=str.replace(/<\/td>/g,",");  
  132.     strstr=str.replace(/,}/g,"}");  
  133.     return str;  
  134. }  
  135.   
  136. function getOldChange(){  
  137.     var flag=true;  
  138.     for( var i=0;i<changeArr.length;i++){  
  139.         if(rowID==changeArr[i]){  
  140.             flag=false;  
  141.         }  
  142.     }  
  143.     if(flag==true){  
  144.         changeArr[changeID]=rowID;  
  145.         oldRecord[changeID]=getOneRecord(rowID);      
  146.         changeID++;  
  147.     }  
  148.       
  149. }  
  150. function getNewChange(){  
  151.     //alert(newRecord[changeID-1]+"\n"+getOneRecord(rowID));  
  152.     newRecord[changeID-1]=getOneRecord(rowID);  
  153.     //alert(newRecord[changeID-1]);  
  154. }  
  155.   
  156. function getOneRecord(rid){  
  157.      t=document.getElementById("tbmain");   
  158.    row_num=t.rows.length;   
  159.    cell_num=t.rows[0].cells.length;   
  160.    var str=new String("");   
  161.    for(var i=0;i<=row_num;i++){//  
  162.     if(rid==i){  
  163.         str="<tr>";  
  164.         for(var j=0;j<=cell_num;j++){   
  165.             str+="<td>"+t.rows[i].cells[j].innerHTML+"</td>";   
  166.         }  
  167.         str+="</tr>";  
  168.       }   
  169.    }  
  170.   return str;  
  171. }  
  172. function leave(){  
  173.     var msg="leave";  
  174.     return msg;  
  175. }  
  176. //window.onbeforeunload=leave;  
  177. //window.onunload=leave;  
  178. </script>  
  179.     <body onload="ReWritable();">  
  180. <table id="tbmain" style="width:100%;" border="1">  
  181. <thead>  
  182. <tr>  
  183. <td>thead,thead,thead</td><td>thead,thead,thead</td>  
  184. </tr>  
  185. </thead>  
  186. <tfoot>  
  187. <tr>  
  188. <td>  
  189. tfoot,tfoot,tfoot  
  190. </td>  
  191. <td>  
  192. tfoot,tfoot,tfoot  
  193. </td>  
  194. </tr>  
  195. </tfoot>  
  196. <tr onMouseDown="rowID=this.cells.item(0).innerHTML;">  
  197.     <td style="display:none">  
  198.     1  
  199.     </td>  
  200.   
  201.     <td>12</td>  
  202.   
  203.     <td>13</td>  
  204.   
  205. </tr>  
  206. <tr onMouseDown="rowID=this.cells.item(0).innerHTML;">  
  207.     <td style="display:none">  
  208.     2  
  209.     </td>  
  210.   
  211.     <td>22</td>  
  212.   
  213.     <td>23</td>  
  214. </tr>  
  215. <tr onMouseDown="rowID=this.cells.item(0).innerHTML;">  
  216.     <td style="display:none">  
  217.     3  
  218.     </td>  
  219.   
  220.     <td>32</td>  
  221.   
  222.     <td>33</td>  
  223. </tr>  
  224. </table>  
  225. <input type="button" onclick="show();" value="show"/>  
  226. <div id="div2"></div><div id="divnew"></div>  
  227. </body>  
  228.   
  229. </html>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值